建立好一个SOCKET s 之后,关于接收的问题,这个套接字s上有数据来到的时候会有什么通知消息吗?例如有数据送到的时候才去recv,另外是不是recv一段数据后这段数据就在s的缓冲区里面消失了,能不能两次 recv都接收缓冲区里面的同一段数据。谢谢大侠的指教

解决方案 »

  1.   

    阻塞socket可以创建一个线程一直在那循环接收就行了
    非阻塞的可以用select模型recv之后就把数据收到你自己的缓冲区里面了,你可以自己做保存使用
      

  2.   

    可以去msdn里查看WSAAsyncSelect这个函数的用法,当一个socket发生了指定的事件(如有数据到了),就调用指定的函数
      

  3.   

    1 看看recv的返回值,就可以判定是否有数据到了
    2 阻塞socket是一只处于等待的,放到while循环中
      

  4.   

    Windows socket 有同步异步之分,1.同步是阻塞式的,线程一直等到接收到数据才返回2.异步模式的socket模型,可以由消息或事件驱动,非阻塞,
      当接收到数据时,系统会返回一个FD_READ消息,你处理消息就行了。
      (感觉就像交给操作系统托管了)