我正在编写小型UDP客户端 - 服务器应用程序。服务器允许连接多个客户端。 要向所有客户发送消息,我使用此代码:
// IPEndPoints - List<IPEndPoint> where I store clients' IPEndPoints
// packet - byte[] with data
for (int i = 0; i < IPEndPoints.Count; ++i)
server.Send(packet, packet.Length, IPEndPoints[i]);
收到消息我用这个:
//packet - byte[] to store data
//endPoint - IPEndPoint
packet = server.Receive(ref endPoint);
但是,当其中一个客户端突然关闭连接时,我仍然尝试向其发送消息endPointand使用代码10054获取SocketException。问题是,如何找出哪个客户端断开连接?如何从IPEndPoints列表中删除此客户端的IPEndPoint?我认为这个IPEndPoint将存储在endPoint中(与ref一起传递),但是当触发异常时,endPoint保持不变。