问题:对于被WSAAsyncSelect 或 WSAEventSelect设置成非阻塞的 如何才能设置成阻塞后完成发包与收包再设回原来状态?
The WSAAsyncSelect and WSAEventSelect functions automatically set a socket to nonblocking mode. If WSAAsyncSelect or WSAEventSelect has been issued on a socket, then any attempt to use ioctlsocket to set the socket back to blocking mode will fail with WSAEINVAL.MSDN上说这两个函数设置成了nonblocking后ioctlsocket设回blocking会失败,但现在假定了不知道目标应用用的是哪个函数,而我需要设置成阻塞后完成发包与收包再设回原来状态,也就是对WSAAsyncSelect 来说我需要目标窗口句柄以及关心的事件,而WSAEventSelect需要了解它曾注册了哪些事件。有什么好的方法吗

解决方案 »

  1.   

    WSAEventSelect()最后那个参数设置为0,那么socket就回复原来状态
      

  2.   

    搞编程技术,嵌入式,人工智能,黑白客技术,linux,evc,VB,VC,C#,JAVA,
    可以加QQ群25162348.
      

  3.   

    to hoocode:   不欢迎广告to zhouzouji: 虽然是个方法,不过要记录的东西就变多了,而且需要完成这些模型的部分功能,似乎开发效率会较低
      

  4.   

    有个复制句柄的API,叫DuplicateHandle()还是什么,将socket复制下来就是一个备份了.