Allora Salve.....
Durante la programmazione di un server capace di dialogare con piu client contemporaneamente è sorto un "piccolo" problema....
Penso che i thread facciano confusione tra di loro!
Sono passato da poco al .net....comunque....
Il codice agisce in questo modo...
Avvia il server creando due nuovi oggetti Server(tcpListener) e Client(tcpClient)
Poi Attendende una connessionecodice:Public Sub AvviaServer() Server = New TcpListener(System.Net.IPAddress.Any, _ServerInfo.Port) Client = New TcpClient Server.Start() _StatoServer = StatoServer.sON End Sub
StartNewThread() crea un nuovo Thread in questo modo:codice:Public Sub AttendiConnessione() If Server.Pending = True Then Client = Server.AcceptTcpClient StartNewThread() End If End Sub
Listato di GetDatacodice:Public Sub StartNewThread() _Thread = New Thread(AddressOf Me.GetData) _Thread.Name = CType(ct, String) _Thread.Start() End Sub
Per provarlo ho creato un piccolo client che si collega al server e invia a comando una stringa...codice:Public Sub GetData() While 0 < 1 Thread.Sleep(1000) Dim _NetworkStream As NetworkStream = Client.GetStream Dim _Byte(Client.ReceiveBufferSize) As Byte _NetworkStream.Read(_Byte, 0, CType(Client.ReceiveBufferSize, Integer)) Dim _Data As String = Encoding.ASCII.GetString(_Byte) If _Byte(0) <> 0 Then MsgBox(_Data, , Thread.CurrentThread.Name) MsgBox("mmm") Generale.Writelog(_Data, Color.Black, Priorità.alta) End If End While End Sub
Cosa succede?Il client si connette ed invia normalmente la stringa...ma al collegarsi di un'altro client, il client precedente invia stringhe per un'altra volta e poi non succede piu nulla, come se nn inviasse nulla!mentre il client collegato per ultimo funziona normalmente finche non si collega un altro client!
Mi è sembrato l'approccio piu logico ma evidentemente non è correttose potete aiutarmi....
Buona serata.

se potete aiutarmi....
Rispondi quotando