问题在你的While循环里,每次循环都重新接受连接,如果发送方知连接一次,那么这个连接在第二次循环就丢了,当然只能收到一次。

解决方案 »

  1.   

    建议的做法是:用一个线程来接受传入的连接,一个线程操作TcpClient对象进行数据收发。不过有一个问题,就是TCPClient的同步接收模式下一旦阻塞CPU占用会达到100%。
      

  2.   

    晴天坊可以具体一点吗??????小弟刚学socket编程。谢谢!
      

  3.   

    你应该首先了解一下协议。
    一旦你建立了连接,这个新的Socket实例的数据接收就是一直连续的。当有数据发送的时候才会接收到,这里你只接收了一次,也就是只能接收到一次的数据,甚至一次的数据都接收不到。
    你需要为这个新的socket连接新建立一个线程,这个线程不断的接收,如果没有数据就一直阻塞。有数据就接收。如果接收出错你可以简单的断开连接,让客户端重新连接还有一个方法是异步的方法,在你接收数据的时候触发新的接收回调函数