现在的位置: 首页 > 综合 > 正文

TCP通信过程中时时监测连接是否已断开

2012年04月17日 ⁄ 综合 ⁄ 共 1145字 ⁄ 字号 评论关闭

贴出主要代码:

  private void ReceiveData(object cUserData)
  {
   User cUser=(User ) cUserData;
            //连接断开标志
   bool closed=false;
   byte[] flagbyte=new byte [1];
   while (!closed )
   {
    try
    {
                    //检测是否有课接收的数据
     if(cUser.client.Available>0)
     {
      byte[] bytes=new byte [cUser.client.Available ];
      cUser.netStream.Read (bytes,0,bytes.Length );
     }
                    //监测连接是否存在
     if(cUser.client.Client.Poll (0,SelectMode.SelectRead))
      closed=int.Equals(cUser.client.Client.Receive (flagbyte,SocketFlags.Peek),0);       
    }
    catch { 
     closed =true;
     System.Diagnostics.Debug.WriteLine ("断开连接!");
     cUser.Close ();
    }     
    Thread.Sleep (1);
   }
  }

       
        public class User
        {
            public string cName { get; set; }
            public TcpClient client { get; set; }
            public NetworkStream netStream { get; set; }
            public User(TcpClient _client)
            {
                this.client = _client;
                this.netStream = client.GetStream();
            }
            public void Close()
            {
                netStream.Close();
                client.Client.Close();
                client.Close();
            }
        }

 

【上篇】
【下篇】

抱歉!评论已关闭.