首页 > CSharp > C#下SOCKET异步调用的TCP SERVER实例

C#下SOCKET异步调用的TCP SERVER实例

2009年2月21日

单位一个项目需要做一个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);
        }

admin CSharp

  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.