2013-09-23 3 views
0

Je souhaite envoyer un message à plusieurs ordinateurs (réseau LAN).Connexion multiple Socket VB.NET

Chaque ordinateur en laboratoire exécute le serveur sauf un ordinateur qui est le client.

problème: une fois un message a été envoyé à premier ordinateur, le client cesse d'envoyer à d'autres ordinateurs.

client:

Dim ip As String 
Dim i As Integer 
Dim serverStream As NetworkStream 
Dim outStream As Byte() 

Dim counter As Integer = 0 
For i = 0 To 100 

Try 
ip = txtRange.Text & i 

clientSocket.Connect(ip, 8888) 

If clientSocket.Connected = True Then 

serverStream = clientSocket.GetStream() 
outStream = System.Text.Encoding.ASCII.GetBytes("Message from the client$") 
serverStream.Write(outStream, 0, outStream.Length) 
serverStream.Flush() 

End If 

Catch ex As Exception 
End Try 
Next 

serveur:

Dim serverSocket As New TcpListener(8888) 
Dim requestCount As Integer 
Dim clientSocket As TcpClient 
serverSocket.Start() 
clientSocket = serverSocket.AcceptTcpClient() 

While (true) 

Dim networkStream As NetworkStream = clientSocket.GetStream() 
Dim bytesFrom(10024) As Byte 
networkStream.Read(bytesFrom, 0, CInt(clientSocket.ReceiveBufferSize)) 
Dim dataFromClient As String = System.Text.Encoding.ASCII.GetString(bytesFrom) 
dataFromClient = dataFromClient.Substring(0, dataFromClient.IndexOf("$")) 
MessageBox.Show("Data from client - " + dataFromClient) 
End While 


clientSocket.Close() 
serverSocket.Stop() 

merci.

Répondre

1

Le client se connecte mais ne se déconnecte jamais. Donc la deuxième fois que vous essayez de connecter le socket est déjà connecté et lance donc une exception. Cette exception est interceptée mais ignorée.

Vous devez donc changer 2 choses:

  1. l'exception au Ecris à moins System.Diagnostics.Debug pour voir l'exception lors de l'exécution dans Visual Studio
  2. Débranchez la prise du client après avoir utilisé et de créer une nouvelle prise avant de se connecter à nouveau