一般创建套接字都是创建的阻塞模式,阻塞模式情况下,要处理多个套接字的连接,就必须创建多个线程的连接,即一个典型的连接用一个线程。通过调用函数方法ioctlsocket,可以从阻塞模式变为非阻塞模式,

u_long ul=1;
SOCKET s=SOCKET(AF_INET,SOCKET_STREAM,0);
ioctlsocket(s,FIONBIO,(u_long*)&ul);

一旦套接字被设置于非阻塞模式,处理发送和接收数据或者管理连接的winsock调用将会立即返回,大多数情况下,调用失败的出错代码是
WSAEWOULDBLOCK,一位着请求操作在调用期间没有完成。如果去确定网络事件何时发生,如果需要自己不断调用函数去测试的话,程序的性能必然会受到影响,解决的办法便是提供了不
windows提供了不同的i/o模型

posted on 2013-01-06 14:47  RedLight  阅读(1817)  评论(0编辑  收藏  举报