套接字多连接 VB.NET

Posted

技术标签:

【中文标题】套接字多连接 VB.NET【英文标题】:Socket Multiple Connection VB.NET 【发布时间】:2013-09-23 22:28:18 【问题描述】:

我希望将消息发送到多台计算机(LAN 网络)。

实验室中的每台计算机都在运行服务器,除了一台作为客户端的计算机。

问题:一旦消息发送到第一台计算机,客户端停止发送到其他计算机。

客户:

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

谢谢。

【问题讨论】:

【参考方案1】:

客户端连接但从不断开连接。因此,您第二次尝试连接套接字时已经连接,因此会引发异常。此异常已被捕获但被忽略。

所以你应该改变两件事:

    至少将异常写入 System.Diagnostics.Debug 以在 Visual Studio 中运行时查看异常 使用后断开客户端套接字并在再次连接之前创建一个新套接字

【讨论】:

以上是关于套接字多连接 VB.NET的主要内容,如果未能解决你的问题,请参考以下文章

vb2010 (vb.net )Socket套接字当网络中断时或服务器意外关机,客户端如何自动重新连接服务端

[VB.NET]Upnp/udp打孔聊天程序tcp/udp sockets

C++ ULONG 定义为 VB.NET 还是 C# 等效?

使用 PHP 的多套接字连接

多线程套接字连接挂起 c#。套接字超时/挂起

python多线程和套接字连接问题