Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

C# socket problem

[es] :: .NET :: .NET Desktop razvoj :: C# socket problem

[ Pregleda: 2213 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Pharos
Pančevo

Član broj: 20664
Poruke: 1029
*.dynamic.sbb.co.yu.



+2 Profil

icon C# socket problem11.11.2007. u 18:49 - pre 172 meseci
Pravim aplikaciju koja se preko SSH konekcije konektuje na Atmel mikrokontroler.
Kada operaciju konektovanja ne stavim u thread, sve radi savršeno osim što se cela aplikacija zamrzne na 4 sekunde koliko joj je potrebno da uspostavi konekciju.
Kada konektovanje stavim u thread kako aplikacija ne bi bila zamrznuta, dobijem sledeći exception:

Code:

A request to send or receive data was disallowed because the socket is not connected and (when sending on a datagram socket using a sendto call) no address was supplied.


Šta mi je činiti?

Mislim da je problematičan deo koda ovde..

Code:

clientSocket.EndConnect(ar);
                sshClient.Open();
                clientSocket.BeginReceive(clientSocketReceiveBuf, 0,
                    clientSocketReceiveBuf.Length, 0,
                    new AsyncCallback(clientSocket_OnReceive),
                    null);


clientSocket je tipa socket, a sshClient je iz neke komercijalne biblioteke koja uspostavlja konekciju.
Kada posle sshClient.Open() stavim Thread.Sleep(3000) sve radi savršeno, ali ne želim da čekam 3 sekunde jer je to previše vremena za tip aplikacije koji radim.
77 77 77 2E 65 73 6E 69 70 73 2E 63 6F 6D
 
Odgovor na temu

PeraKojovic
Petar Kojovic
Novi Sad

Član broj: 95569
Poruke: 56
*.ns.ac.yu.



Profil

icon Re: C# socket problem13.11.2007. u 09:10 - pre 172 meseci
Pozdrav,
trebalo bi da das precizniji kod, tj. sta si tacno stavio u novi tred.
Ali, generalno moje pitanje za tebe bi bilo ako si ceo onaj deo koda
stavio pod novi tred, onda zasto koristis neblokirajucu funkciju BeginRecieve,
umesto samo Recieve? Taj tred si valjda otvorio za konekciju i prijem, sto
bi sad on otvarao jos pod-tredova(grubo receno, ali nestoi tako ide na
tred-pool)...

Dakle, ako nisi resio problem, prvo sto bih ja probao je da posle Connect(),
proverim da li sam konektovan, a ako jesam onda u .Recieve() metod.

Ako ne prodje, daj malo vise koda, i info o tome koju komponentu ssh koristis?


Pera
 
Odgovor na temu

Pharos
Pančevo

Član broj: 20664
Poruke: 1029
*.dynamic.sbb.co.yu.



+2 Profil

icon Re: C# socket problem13.11.2007. u 10:11 - pre 172 meseci
Koristim Eldosovu SSH Client biblioteku: http://eldos.com/sbb/

Sa bibliotekom sam dobio demo projekat u kome konekcija može da se smesti u thread.
Pokušao sam da ceo kod za konektovanje i komunikaciju ukalupim u jednu klasu jer mi je potrebno da istovremeno ostvarim više SSH konekcija i tada mi se pojavljuje onaj exception.
Pisao sam dev timu, ali izgleda da nema ništa od odgovora..
77 77 77 2E 65 73 6E 69 70 73 2E 63 6F 6D
 
Odgovor na temu

PeraKojovic
Petar Kojovic
Novi Sad

Član broj: 95569
Poruke: 56
*.ns.ac.yu.



Profil

icon Re: C# socket problem14.11.2007. u 07:33 - pre 172 meseci
E sad, ako jos nisi resio problem,
malo sam pogledao na njihovoj stranici : http://eldos.com/sbb/articles/3995.php?phrase_id=213105,
i tamo pise da samo komponente za "data processing" nisu thread-safe.
Pretpostavljam da ti ni ne stignes do processinga, vec ti pukne na prijemu.
Ako slucajno koristis u tome sto si stavio u tred nesto iz "data-processing" klasa,
barem smo nasli zasto nece...
Probaj da proveris da li stvarno dajes dobru adresu...


Pozdrav,
Pera
 
Odgovor na temu

[es] :: .NET :: .NET Desktop razvoj :: C# socket problem

[ Pregleda: 2213 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.