Socket服务端可能有一些长期连接的Socket客户端,并且长期不发送数据到服务端,这样很浪费服务端资源。下面代码是服务端主动断开无用的Socket客户端
/// <summary> /// 接收客户端发来的信息 /// </summary> static void ServerRecMsg(object socketClientPara) { Socket socketServer = socketClientPara as Socket; //设置 5秒种超时 socketServer.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReceiveTimeout, 5000); int firstReceived = 0; byte[] buffer = new byte[8192]; while (true) { try { //获取接收的数据,并存入内存缓冲区 返回一个字节数组的长度 if (socketServer != null) { firstReceived = socketServer.Receive(buffer); } //接受到的长度大于0 说明有信息或文件传来,有些客户端 发送0个字节 代表断开 if (firstReceived > 0) { byte[] result = buffer.Take(firstReceived).ToArray(); Console.WriteLine(BitConverter.ToString(result)); } else { break; } } catch (Exception ex) { Console.WriteLine(ex.Message); socketServer.Close();//关闭socket连接 break; } } }有的客户端一直发送数据到Socket服务端,但这些客户端不是服务端需要的数据。我们可能对数据判断,如不是我们需要的数据格式,主动断开。原创地址:http://www.luofenming.com/show.aspx?id=ART2020111100001