WinSock异步IO模型之Select
如果你想在Windows平台上构建服务器应用,那么I/O模型是你必须考虑的。 Windows操作系统提供了五种I/O模型,分别是: ■ 选择(select); ■ 异步选择(WSAAsyncSelect); ■ 事件选择(WSAEventSelect); ■ 重叠I/O(Overlapped I/O); ■ 完成端口(Completion Port) 。 每一种模型适用于一种特定的应用场景。程序员应该对自己的应用需求非常明确, 综合考虑到程序的扩展性和可移植性等因素,作出自己的选择。 ============================================== █ 选择(select)模型是Winsock中最常见的 I/O模型。核心便是利用 select 函数,实现对 I/O的管理! 利用 select 函数来判断某Socket上是否有数据可读,或者能否向一个套接字写入数据,防止程序在Socket处于阻塞模式中时, 在一次 I/O 调用(如send或recv、accept等)过程中,被迫进入“锁定”状态;同时防止在套接字处于非阻塞模 式中时,产生WSAEWOULDBLOCK错误。 █ select 的函数原型如下: int select( __in int nfds, __in_out fd_set* readfds, __in_out fd_set*