我编了一个c/s模式的程序,第一次c端send,s端recv时可以,接下来我继续c端send,s端recv时,recv无法执行下去。我单步执行时,程序卡在recv处,无法向下执行。我想问问,什么情况下回出现这样的状况?有没有什么办法解决?

解决方案 »

  1.   

    出现这种情况只能说明server端没有继续收到数据,应该是程序上有问题
      

  2.   

    resv接受不到数据就会挂起,所以不响应,看下你第一次发送后又没有把建立的连接断开了。
      

  3.   

    s端要一直处在监听状态下,做个循环。你有可能在第一次发送完后把连接断开,或者把socket关闭了
      

  4.   

    阻塞模式socket的recv就是“阻塞”的,调用recv的线程会挂起,直到收到远程数据
    可以:
    使用一个新的线程处理
    使用“非阻塞”的socket
    使用重叠I/O
      

  5.   

    建议先看看有关Socket编程相关的书籍再动手
      

  6.   

    我想会不会是这样的问题。因为程序的问题,因为是多线程编程,就出现了重复的socket,这样在第一个发送成功后,第二个不能成功,因为socket不一样了。不知道有没有办法解决?
      

  7.   

    recv 在阻塞模式下,如果无数据可读,也即没有收到数据就会阻塞在那里不动。
      

  8.   


    我想会不会是这样的问题。因为程序的问题,因为是多线程编程,就出现了重复的socket,这样在第一个发送成功后,第二个不能成功,因为socket不一样了。不知道有没有办法解决?
    ==============================================================================很多人都说的很清楚了
    阻塞的socket没有收到报文的时候,就是“无法执行下去”的。要等到收到报文,才能继续“执行下去”