Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Server multiclient asincrono
Forum - C# / VB.NET - Server multiclient asincrono

Avatar
orma674 (Normal User)
Rookie


Messaggi: 55
Iscritto: 02/06/2008

Segnala al moderatore
Postato alle 16:42
Martedì, 01/10/2013
ciao a tutti,
volevo sapere se in un server multiclient asincrono l'ascolto dei client connessi va fatto con un ciclo

for each _SckClient
_SckClient.BeginReceive(gDataReceived, 0, gDataReceived.Length, SocketFlags.None, New AsyncCallback(AddressOf cSocket_Receive), _SckClient) '''''_SckClient utente di una lista di socket
next

oppure una volta aperto la ricezione questa rimane fino al termine dell'applicazione.

Grazie
Saluti
Marcello


Orma674 by Marcello
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5460
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 19:59
Martedì, 01/10/2013
Il codice del server deve essere multithread. Una connessione per thread.


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
PM Quote
Avatar
orma674 (Normal User)
Rookie


Messaggi: 55
Iscritto: 02/06/2008

Segnala al moderatore
Postato alle 2:15
Giovedì, 03/10/2013
Grazie per la risposta.

Mi sai dire anche per svuotare il buffer di invio come posso fare. Con i TCPClient e NetworkStream utilizzavo il flush, con i socket c'è un comando specifico o bisogna manipolare in qualche modo il buffer.

Il mio problema è il seguente:
TextBox Tx String = 1234567890 , TextBox Rx String = 1234567890
TextBox Tx String = abcde           , TextBox Rx String = abcde67890

Sono sovrascritti i caratteri senza effettuare una reale cancellazione.

Utilizzare un riempimento del buffer con Chr(0) mi sembra poco bello è dispendioso come risorsa.

Ho provato ad usare Socket.Avabile per ricevere la lunghezza del buffer pronto per essere letto, ma questo mi restituisce 0. Ho provato a leggere la lunghezza con EndSend(ar) che mi da il valore da passare a Socket.ReceiveBuffer e la variabile di lettura byte, questo restituisce il giusto valore ma non può essere invocata due volte cosi che non mi restituisce il buffer.

Grazie per la collaborazione
Marcello


Orma674 by Marcello
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5460
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 20:02
Giovedì, 03/10/2013
Non ho capito cosa intendi ...


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
PM Quote
Avatar
orma674 (Normal User)
Rookie


Messaggi: 55
Iscritto: 02/06/2008

Segnala al moderatore
Postato alle 22:49
Giovedì, 03/10/2013
Ho risolto da me, Grazie lo stesso!!!!

Avevo problemi nella visualizzazione della stringa buffer in arrivo.
La soluzione è stata quella di intercettare i byte in arrivo, dichiarare una nuova variabile e copiare con Buffer.CopyTo il numero dei byte ricevuti.

Saluti
Marcello


Orma674 by Marcello
PM Quote