我正在尝试使用一个 UdpClient 创建一个简单的 UDP 服务器,它在第一个连接中工作正常,但如果另一个 IP 向正在侦听的同一端口发送某些内容,则会被忽略,因为据我所知,套接字已连接到另一个远程IP
MyUdpClient.Connect(RemoteIpEndPoint)
MyUdpClient.Send(Encoding.ASCII.GetBytes(ACK), ACK.Length)
因此,在发送 ACK 后,我添加一行以断开与远程客户端的连接,以便继续监听
MyUdpClient.Client.Disconnect(True)
但是我收到错误 10057。
“由于套接字未连接,发送或接收数据的请求被禁止......”
这很奇怪,因为远程客户端接收到了所有数据,我不明白发生了什么,试图发送什么?
有什么方法可以知道我何时可以断开与当前远程客户端的连接?
我需要做的是对每个数据包应答 ACK,并将随机数据发送到最后一个向服务器发送内容的远程 IP。
我有更多代码,但有点长,如果您需要它,请告诉我。
UDP 是一种无连接协议,与 TCP 不同。因此,您无法断开 UDP 客户端的连接,因此错误是正确的(尽管有些误导)。
至于为什么第二次连接失败,我们需要查看你的服务器代码。也许您也不小心关闭了服务器 UDP 套接字?