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

贴出主要代码:


  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();
            }
        }

 

posted @ 2012-05-09 09:35  teyond  阅读(609)  评论(0)    收藏  举报