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)
codice:
Public Sub AvviaServer()
Server = New TcpListener(System.Net.IPAddress.Any, _ServerInfo.Port)
Client = New TcpClient
Server.Start()
_StatoServer = StatoServer.sON
End Sub
Poi Attendende una connessione
codice:
Public Sub AttendiConnessione()
If Server.Pending = True Then
Client = Server.AcceptTcpClient
StartNewThread()
End If
End Sub
StartNewThread() crea un nuovo Thread in questo modo:
codice:
Public Sub StartNewThread()
_Thread = New Thread(AddressOf Me.GetData)
_Thread.Name = CType(ct, String)
_Thread.Start()
End Sub
Listato di GetData
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
Per provarlo ho creato un piccolo client che si collega al server e invia a comando una stringa...
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 è corretto
se potete aiutarmi....
Buona serata.