1.accsock.Connected连接的是哪个主机??是客户端还是自己??   服务器接收客户端连接2、bool.不走的原因是没有客户端连接过来

解决方案 »

  1.   

    1. 客户端
    2. 需要客户端连接过来,才走到该端点,否则accsock = sock.Accept(); 会一直等待有客户端连接过来。
      

  2.   

    1、accsock.Connected不是连接谁,只是返回一个是否连接的状态,注意后缀ed,不是动词Connect,这里Connected是属性Connect是方法,其实上面一句Accept接受的是客户端的连接
    2、其实不是走到accsock.Connected这句,是走到了上一句accsock = sock.Accept();就停止了,在等待客户机的连接,客户机没有就一直在accsock = sock.Accept();这句等待
      

  3.   

    是的,客户端没有连接时,sock.Accept()就导致线程阻塞了,所以,一般的,在调用sock.Accept()之前,需要先判断状态,看看是否需要Accept()
    例如:if(sock.Poll(50, SelectMode.SelectRead))
    {
       Socket newSock = sock.Accept();
       if (sock.Connected)
       {
          //该连接已建立,可以进行一些处理
       }
    }
      

  4.   

    更正:
    if(sock.Poll(50, SelectMode.SelectRead)) 

      Socket newSock = sock.Accept(); 
      if (newSock.Connected)  //此处更正了sock-->newSock  { 
          //新的连接已建立,可以进行一些处理 
      } 
    }
      

  5.   

    晕,排版问题更正:if(sock.Poll(50, SelectMode.SelectRead)) 

      Socket newSock = sock.Accept(); 
      if (newSock.Connected)  //此处更正了sock-->newSock  
      { 
          //新的连接已建立,可以进行一些处理 
      } 
    }