我用一个独立的线程用于发送接收来自网络的数据,但是有时候执行到socket.recive(buffer)线程就不执行了。。我检测线程的状态,发现还在运行。但是加入断点后发现都没有执行。我又分别在线程内建立连接,发送数据。接收数据分别加入输出标志。发现执行到接收数据部分时没有响应。我想知道如果客户端如果网络连接不断,但是程序没响应。也就是不给往回数据了,socket.reciver(buffer)就没响应吗?还有就是如果buffer定义的小了,还有数据没有接收到,或是buffer定义的小了,其余的是用0来补充吗?socket.recive这个方法有没有超时的说法?如果接收不到数据的话?一直等待吗?求牛人帮助解答,不胜感激!

解决方案 »

  1.   

    BeginReceive()
    receive() 和 beginreceive() 同步异步 
      

  2.   

    有超时的说法,设置socket.ReceiveTimeout
      

  3.   

    tcp要自己定义包的边界
    缓存区
    开线程来接收数据
    再用异步方法接收数据
      

  4.   

    楼主可以给我推荐几本socket编程的入门吗?
    我一直都是ASP.NET做网页,刚刚开始接触WCF,也自己理解了一下socket编程,应该是最底层的通信,WCF都已经把socket基础封装好了然后给以使用,是这样吗。
    我想学点比较深入的东西,请楼主给我帮助