如何用windows API函数实现阻塞非阻塞 和同步异步的网络通讯? 阻塞非阻塞 和同步异步如何搭配使用呢?select函数具体作用是什么?

解决方案 »

  1.   

    一般用阻塞模式,阻塞模式是指调用WinSock的时候,在发送完数据前,方法不返回。这种方式可以很简单的扩展为非阻塞模式,而且很灵活,所以建议使用阻塞模式。同步异步指的是,服务器和客户端的应答,这种应答过程是你自己定义的,和API无关。同步应答指的是,在上一个应答没有完成前不进行新的应答,异步方式就是各自说各自的,如何同步看你如何设计通信协议方式了。有时候,我们会把API的阻塞调用称为同步调用,这迷惑了很多菜鸟。一般我们说API同步、异步方式的时候,指的是,输入输出操作的同步和异步,比如读写文件,在WinNT5下可以实现异步读写,就是读写没有完成前API函数就返回了,其实就是非阻塞模式。select根据标准的Socket2的解释:确定一个或者多个套接字的状态,如需要则等待。
    对于每一个套接字,我们可确定它的可读、可写及错误状态。
      

  2.   

    楼上的谢谢 能不能说说如何设置SOCKET套接字为阻塞模式和非阻塞模式?
      

  3.   

    ioctlsocket 是用这个函数么? 具体这个函数的参数都是什么 怎么用呢?
      

  4.   

    举例说明,recv默认的recv在windows实现中就是阻塞方式的。要精确的控制阻塞和非阻塞,请使用WSARecv。更多的具体的自己去看MSDN
      

  5.   

    那ioctlsocket 这个函数是怎么用的呢?
      

  6.   

    用来设置socket状态可以设置阻塞还是非阻塞,其他的我也不清楚了/。