socket的select模式算异步通信否?//如果用用WSAStartup()初使化之后。
本帖最后由 oyljerry 于 2013-10-13 11:53:30 编辑 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
[解决办法]
没事,一起讨论吧。
是的。ioctlsocket(..., FIONBIO,...)用于设置socket处理blocking或者nonblocking模式,这会影响connect accept send recv的运行特性。
nonblocking模式下,connect会立即返回SOCKET_ERROR错误且WSAGetLastError 返回WSAEWOULDBLOCK,详见msdn.
我看MSDN里强调的主要是blocking/nonblocking,没有看到关于socket中的同步异步的明确说法。
我理解所谓socket通讯的异步模式,应该是指使用了WSAAsyncSelect()。Async前缀的意思是异步。那这个"异步"WSAAsyncSelect应该是相对于传统的所谓"同步"select()而言的。
调用了WSAAsyncSelect,就意味着程序应该采用事件驱动模式获取socket事件通知,而不需要去select轮询.