我第一次写socket的程序,在和服务器建立连接后,使用recv接收数据,当没有数据可读时recv会一直在哪里等待,不知道是怎么回事,我是这样调用的啊
recv(s, buffer, 255, 0),应该没有错吧,

解决方案 »

  1.   

    没错,CSocket默认是阻塞模式的,没有数据它会一直等在那儿。
      

  2.   

    用ioctlsocket先将socket设置为非阻塞的
      

  3.   

    套接字不一定要设成非阻塞的,只要用select模型来检测就行了, 有数据才去调用recv
      

  4.   

    1.用一个线程负责Socket IO
    OR
    2.改为异步的IO模型。
      

  5.   

    直接使用CSOCKET里面的
    ONRECEIVE函数
      

  6.   

    如果是MFC的socket编程,用CAsyncSocket吧,看看MSDN吧