Oppure

Loading
23/06/08 15:03
klez91
Ciao a tutti. Riscontro sempre problemi con la proprietà System.Net.Sockets.TCPClient.Available e non solo questa ma anche con NetworkStream.DataAvailable infatti mettendole in un Timer anche quando ci sono dati disponibili per il programma è come se non esistessero!!! Ho visto infatti che se tolgo la codizione che esistano dati disponibili in modo che il timer continua a leggere dati dallo stream di rete, quando effettivamente vengono scritti, il programma li riesce a leggere. Però così l'applicazione diventa troppo pesante a causa del Timer che ogni 100 ms legge lo stream di rete perciò vi chiedevo se potevate aiutarmi! Grazie :k:
aaa
24/06/08 7:26
Il Totem
Mi sembra davvero strano che non funzioni: io l'ho sempre usata senza problemi. Forse la usi come boolean invece che integer?
If Socket.Available > 0 Then '...
aaa
24/06/08 10:40
klez91
Grazie Totem ma la sintassi che uso è quella, la cosa strana è che togliendo la codinzione se siano o no disponibili dati, il programma li legge invece mettendo questa condizione non legge niente più, però adesso vorrei chiederti che differenza c'è tra l'utilizzare la classe TCPClient e la classe Socket ???
Ultima modifica effettuata da klez91 24/06/08 11:54
aaa
24/06/08 19:14
punkettone90
tcpclient è la classe che ti permette di attaccarti ad un server, da li poi tu scegli se usare un socket o uno stream (le impostazioni di questi 2 sono prese da tcpclient); socket e stream lavorano su livelli diversi: un socket è come un'apertura sulla rete, un stream invece è come un canale di comunicazione; comunque secondo me non c'è molta differenza se usare uno o l'altro.
aaa
24/06/08 19:20
punkettone90
ho sbagliato una cosa, tcpclient e socket servono entrambi per connettersi, solo che tcpclient è già impostato per funzionare su TCP e inoltre ha alcune impostazioni predefinite, le socket invece sono più malleabili nel senso che volendo si potrebbero anche usare per mandare pacchetti ICMP o come li si preferisce :k:
aaa
24/06/08 20:15
klez91
Grazie punkettone90 per aver risposto.
Ritornando al mio problema forse ho capito dove ho sbagliato. In effetti il TCPClient che utilizzo con la proprietà Available è ottenuto dall'uguaglianza con un'altro TCPClient appartenente ad un'array di TCPClient in questo modo :
Dim Client(2) As TCPClient
Dim ClientScelto As TCPClient
Client(0) = New TCPClient
ClientScelto = New TCPClient
Client(0) = ClientScelto

...la stessa cosa con la classe NetworkStream.
Può dipendere da questo ????
aaa
25/06/08 7:43
Il Totem
L'errore potrebbe stare in new. Se inizializzi un nuovo tcpclient, che evidentemente non è connesso a niente, Available restituisce per forza sempre 0, perchè non c'è mai niente da leggere.

P.S.: quell'assegnazione è inutile: entrambi sono nuovi TCP vuoti.
Ultima modifica effettuata da Il Totem 25/06/08 7:44
aaa