0

複数のコンピュータ (LAN ネットワーク) にメッセージを送信したい。

ラボ内の各コンピューターは、クライアントである 1 台のコンピューターを除いてサーバーを実行しています。

問題: メッセージが最初のコンピューターに送信されると、クライアントは他のコンピューターへの送信を停止します。

クライアント :

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

サーバー:

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()

ありがとうございました。

4

1 に答える 1

1

クライアントは接続しますが、切断することはありません。したがって、2 回目に接続しようとすると、ソケットは既に接続されているため、例外がスローされます。この例外はキャッチされますが、無視されます。

したがって、次の 2 点を変更する必要があります。

  1. Visual Studio での実行中に例外を確認するには、少なくとも System.Diagnostics.Debug に例外を書き込みます。
  2. 使用後にクライアントソケットを切断し、再度接続する前に新しいソケットを作成します
于 2013-09-24T09:20:13.240 に答える