项目主要是不停的接收多个客户端发送过来的数据,服务端发送指令给客户端,客户端返回数据给服务端。在测试运行时,其中一个客户端断电(断开连接),导致服务端卡死在接收的死循环里,导致正常连接的客户端的数据无法接收。,如何关闭已断开的socket?
void Recive(object o)
{
Socket socketSend = o as Socket;
while (true)
{
try
{
//客户端连接成功后,服务器应该接受客户端发来的消息
byte[] buffer = new byte[1024 * 1024 * 2];
//实际接受到的有效字节数
int r = socketSend.Receive(buffer);
if (r == 0)
{
break;
}
string str = Encoding.UTF8.GetString(buffer, 0, r);
}
catch
{
// MessageBox.Show("接收出错");
}
}