C#下SOCKET异步调用的TCP SERVER实例
单位一个项目需要做一个TCP SOCKET通讯的东西, 上网搜索了一下, 发现一片文章不错, 转到这里来了.
我已经打包了, 需要的朋友请从这里下载, VS2005打开.
原文地址:http://dev.csdn.net/article/65/65798.shtm.
附: 当客户端连接上服务器端之后除非主动发出指令退出,否则会一直保持与SERVER的连接状态,在这个例子中,SERVER端可以设置最大的客户端连接数, 当然如果我们想让客户端在发呆一段时间之后断开连接的话,可以在Session类中添加一个DateTime字段, 然后当服务器端在AcceptCallBack(IAsyncResult ar)方法中接收客户端连接时进行判断,使用方法CloseIdleClient(int min);关闭掉已经超时的CLIENT连接.
/// <summary> /// 关闭所有发呆的客户端 /// </summary> /// <param name="min">发呆时间</param> public virtual void CloseIdleClient(int min) { List<SessionId> list = new List<SessionId>(); foreach (Session client in _sessionTable.Values) { TimeSpan ts = DateTime.Now.Subtract(client.ConnDate); if (ts.Minutes >= min) { client.Close(); list.Add(client.ID); } } foreach (SessionId id in list) _sessionTable.Remove(id); }
Recent Comments