C# socket服务端判断 客户端已经断开连接的一个小办法
2017-02-23 21:03
651 查看
具体原理就是:
If the remote host shuts down the Socket connection with the Shutdown method, and all available data has been received, the Receive method will complete immediately and return zero bytes.
中文翻译:如果远程主机关闭 Socket 与连接 Shutdown 方法,并且所有可用数据已被接收, Receive 方法将立即完成并返回零字节。
详见MSDN:跳转到MSDN
下面是一段示例代码,其核心就是这个Socket.Receive方法(好吧,在本例中使用的是”myClientSocket.Receive”)
If the remote host shuts down the Socket connection with the Shutdown method, and all available data has been received, the Receive method will complete immediately and return zero bytes.
中文翻译:如果远程主机关闭 Socket 与连接 Shutdown 方法,并且所有可用数据已被接收, Receive 方法将立即完成并返回零字节。
详见MSDN:跳转到MSDN
下面是一段示例代码,其核心就是这个Socket.Receive方法(好吧,在本例中使用的是”myClientSocket.Receive”)
private void ReceiveMessage(object clientSocket) { byte[] result = new byte[1024]; Socket myClientSocket = (Socket)clientSocket; if (myClientSocket == null) { return; } string clientId = myClientSocket.RemoteEndPoint.ToString(); if (string.IsNullOrWhiteSpace(clientId) || !myClientSocket.Connected) { return; } while (true) { try { //通过clientSocket接收数据 if (!myClientSocket.Connected) { RemoveClient(clientId); break; } myClientSocket.ReceiveTimeout = 100000; //设置超时时间,如果超过此时间没收到客户端的心跳数据,则端口客户端连接 //receiveNumber 显示接收的字节数,当它等于0时,说明已经接收完所有可用数据,并且断开了socket的连接 int receiveNumber = myClientSocket.Receive(result); string msg = Encoding.Default.GetString(result, 0, receiveNumber); if (receiveNumber == 0) { //看这个receiveNumber, 当它等于0的时候,说明已经断开了客户端的连接 //这里代码不全,就权当看个意思~ RemoveClient(clientId); break; } else if (!string.IsNullOrWhiteSpace(msg) && msg.Length == 1 && msg[0] == (char)5 //查询字符串 ) { //说实话我不太知道这个else if作用是啥,就先放这以后研究吧~ myClientSocket.Send(Encoding.Default.GetBytes(new char[] { (char)4 })); } else { myClientSocket.Send(Encoding.Default.GetBytes(string.Format("收到客户端{0}的消息:{1}", clientId, msg))); } } catch (Exception ex) { } } }
相关文章推荐
- 常量,字段,构造方法 调试 ms 源代码 一个C#二维码图片识别的Demo 近期ASP.NET问题汇总及对应的解决办法 c# chart控件柱状图,改变柱子宽度 使用C#创建Windows服务 C#服务端判断客户端socket是否已断开的方法 线程 线程池 Task .NET 单元测试的利剑——模拟框架Moq
- C#服务端判断客户端socket是否已断开的方法
- 如何判断一个SOCKET连接是否已经断开
- 如何判断一个SOCKET连接是否已经断开
- C#服务端判断客户端socket是否已断开的方法
- 如何判断一个SOCKET连接是否已经断开
- 【VS开发】如何判断客户端SOCKET已经断开连接?
- JAVA NIO写服务端判断客户端断开连接的方法
- 服务器中判断客户端socket断开连接的方法
- 服务器中判断客户端socket断开连接的方法
- 服务器中判断客户端socket断开连接的方法
- C# winform socket一个服务端和多个客户端进行通信
- C#怎么判断一个Socket是否连接
- tcp 服务端如何判断客户端断开连接
- 如何判断一个tcp连接已经断开
- C#怎么判断一个Socket是否连接
- C# Socket服务器端如何判断客户端断开求解
- unix domain socket判断客户端断开连接
- 服务器中判断客户端socket断开连接的方法
- C# Socket聊天程序(一个服务端,多个客户端)