我正在做一些非常简单的跨平台的TCP套接字编程。 我很不幸地发现,在Windows编译的时候,我的插座是非阻塞的默认,而在OS X系统会默认阻止。 如何强制一个插座到Windows上阻塞模式? 难道他们通常默认为非阻塞模式或不对头?
我的代码是部分基于这些简单的例子: http://cs.baylor.edu/~donahoo/practical/CSockets/code/TCPEchoClient.c http://cs.baylor.edu/~donahoo/practical/CSockets/代码/ TCPEchoServer.c
我相信, 这个参考可以帮助; 注意,特别是那
虽然插座阻塞操作是在Windows套接字支持,它们的使用是强烈反对。 例如,作为现有的应用程序将被移植的一部分 - - 谁被限制使用阻塞模式的程序员应该知道在Windows套接字阻塞操作的语义。
如果你充分了解上市数不胜数的问题在这里 ,并找到应对所有这些最好设计你的程序,来搭配的Windows,而不是从Unix一个半蜂鸣 ED口,正前方去了ioctlsocket通话与设置FIONBIO的cmd参数和指向0值长字但是,不要说你没有警告;-)第三个参数。
不,普通的旧BSD风格的插座不非阻塞默认情况下,在Windows上。 看到的例子中的Winsock编程的常见问题 。
如果您使用MFC及其CAsyncSocket的一塌糊涂,那么,它的所有非阻塞的,但是这是一个单独的问题 。