非阻塞套接字和重叠IO套接字有什么区别? 有点晕了,大家解答下 谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这是两个不同的概念,一个从等待“网络事件”的角度,一个是从异步I/O的角度。重叠的 I/OWinsock 1 中创建使用套接字 API,一个重叠的套接字,并使用 Win32 文件 I/O API ReadFile,ReadFileEx、 WriteFile、 WriteFileEx 套接字句柄上执行重叠的 I/O。在 Winsock 2 中,您将创建一个重叠的套接字 WSASocket 使用 WSA_FLAG_OVERLAPPED 标志,或只需使用套接字 API。您可以使用上面的 Win32 文件 I/O api 或 Winsock 2 WSASend、 WSASendTo、 WSARecv 和 WSARecvFrom 启动重叠的 I/O 操作。如果您使用该 SO_RCVBUF 和 SO_SNDBUF 选项设置为零 TCP 堆栈接收和发送缓冲区,您基本上指示 TCP 堆栈直接执行 I/O 使用您的 I/O 调用中提供的缓冲区。因此,除了重叠的套接字 I/O 的非阻止优点,其他优点是更好的性能由于保存缓冲区副本 TCP 堆栈缓冲区和用户缓冲区对每个 I/O 调用之间。但是,您必须确保一旦它的提交的重叠操作和重叠的操作完成之前,您不访问用户缓冲区。阻塞和非阻止模式在创建套接字时默认情况下它是阻塞套接字。在阻止模式套接字 I/O 操作,连接并接受所有阻塞,直到完成该操作相关的操作。从阻塞模式套接字操作模式更改为非阻止模式,您可以使用 WSAAsyncSelect、 WSAEventSelect,或 FIONBIO 命令 ioctlsocket API 调用中。参考,很详细了:http://support.microsoft.com/kb/181611/zh-cn 使用windbg + VM进行调试时出现的一个错误,恳请各位帮忙看看 简单的字符串处理问题 请问如何使用Microsoft Office提供的摸板库获得一个word文档的页数? 为什么我的COMBOBOX在DROPLIST方式下,SETCURSEL只能放在初始化里处理,放其它地方就出错? 从文件读取值到整型变量中时遇到的棘手问题(急!多谢各位高手) 请问状态栏如何刷新? !!!!!!请教一个至今为止没有人给我一个建议的问题,太感谢了 对话框内容的刷新如何实现? 我的计算机三级该报什么? 专题请教(解决就给分,在线) 一个含有Alpha通道的HBITMAP的绘制问题 CGridCtrl问题
Winsock 1 中创建使用套接字 API,一个重叠的套接字,并使用 Win32 文件 I/O API ReadFile,ReadFileEx、 WriteFile、 WriteFileEx 套接字句柄上执行重叠的 I/O。在 Winsock 2 中,您将创建一个重叠的套接字 WSASocket 使用 WSA_FLAG_OVERLAPPED 标志,或只需使用套接字 API。您可以使用上面的 Win32 文件 I/O api 或 Winsock 2 WSASend、 WSASendTo、 WSARecv 和 WSARecvFrom 启动重叠的 I/O 操作。如果您使用该 SO_RCVBUF 和 SO_SNDBUF 选项设置为零 TCP 堆栈接收和发送缓冲区,您基本上指示 TCP 堆栈直接执行 I/O 使用您的 I/O 调用中提供的缓冲区。因此,除了重叠的套接字 I/O 的非阻止优点,其他优点是更好的性能由于保存缓冲区副本 TCP 堆栈缓冲区和用户缓冲区对每个 I/O 调用之间。但是,您必须确保一旦它的提交的重叠操作和重叠的操作完成之前,您不访问用户缓冲区。阻塞和非阻止模式
在创建套接字时默认情况下它是阻塞套接字。在阻止模式套接字 I/O 操作,连接并接受所有阻塞,直到完成该操作相关的操作。从阻塞模式套接字操作模式更改为非阻止模式,您可以使用 WSAAsyncSelect、 WSAEventSelect,或 FIONBIO 命令 ioctlsocket API 调用中。参考,很详细了:
http://support.microsoft.com/kb/181611/zh-cn