Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 3 odgovora
  • 3.144 pregleda

Najnovija ↓

C# socket problem 11.11.2007. u 19:49 · pre 230 meseci #1
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.
Potpis
77 77 77 2E 65 73 6E 69 70 73 2E 63 6F 6D
Re: C# socket problem 13.11.2007. u 10:10 · pre 230 meseci #2
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
Re: C# socket problem 13.11.2007. u 11:11 · pre 230 meseci #3
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..
Potpis
77 77 77 2E 65 73 6E 69 70 73 2E 63 6F 6D
Re: C# socket problem 14.11.2007. u 08:33 · pre 230 meseci #4
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
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme