TcpClient在调用Close的时候会发送关闭信息到服务器端的

解决方案 »

  1.   

    while(true)
    {
       socket.Receive(bb,bb.Length,0);//当TcpClient已经关闭后,这里仍然在等待读取!
       ...
    }如上,如何解决
      

  2.   

    你错了,等待其实已到了下一次,需要你截取socket.Receive(bb,bb.Length,0)这句话的异常,你可以试试,当对方关闭时,receive会触发异常,你可以看vs.net的例子wintalk,仔细看,绝对是好例子,还包含委托、线程的内容,不过要有耐心
      

  3.   

    能不能直接说说,哪个例子太罗嗦了,另:while{...}是在一个线程中执行,好象截取不到socket.Receive()的异常!
      

  4.   

    while(true)
    {
      ..........
      try
      { 
         socket.Receive();
      }
      catch(exception e)
      {
         Console.WriteLine(e.ToString());
         break;
      }
      ..........
    }
      

  5.   

    在线程中是不能用try来截取异常的
      

  6.   

    可以我用过,可能这段代码对你的用处会更大
            char[] oneBuffer = new char[1];
            int readMode = 1;        while(readMode != 0){
                if(reader.Read(oneBuffer, 0, 1)==0){//当对方关闭时reader这个流读到的
                                                    //字节数为0
                    readMode = 0;
                    continue;
                }            switch(readMode){
                case 1:        
                    break;
                case 2:
                    break;
                default:
                    readMode = 0;
                    continue;
                }            
            }
      

  7.   

    最后用自己的办法搞定了,不过还是谢谢gogogo(嘿嘿)