守护线程
在服务端版Socket编程需要处理长时间没有发送数据的Socket,需要在超时多长时间后断开连接,我们需要独立一个线程(DaemonThread)来轮询,在执行断开时,需要把Socket对象锁定,并调用CloseClientSocket来断开连接,具体处理代码如下:
namespace SocketAsyncSvr { class DaemonThread : Object { private Thread m_thread; private AsyncSocketServer m_asyncSocketServer; public DaemonThread(AsyncSocketServer asyncSocketServer) { m_asyncSocketServer = asyncSocketServer; m_thread = new Thread(DaemonThreadStart); m_thread.Start(); } public void DaemonThreadStart() { while (m_thread.IsAlive) { AsyncSocketUserToken[] userTokenArray = null; m_asyncSocketServer.AsyncSocketUserTokenList.CopyList(ref userTokenArray); for (int i = 0; i < userTokenArray.Length; i++)

本文介绍了在C#中使用完成端口和多线程实现高性能Socket并发时,如何处理超时连接的断开策略。通过守护线程(DaemonThread)进行定时轮询,当检测到Socket长时间无数据交换时,锁定Socket并调用CloseClientSocket方法断开连接。同时,文章探讨了心跳包的概念,作为维持连接状态的有效手段,心跳包由客户端发起,服务器响应,通过检测响应来确保连接的正常性。
最低0.47元/天 解锁文章
1770





