注意,CreateIoCompletion Port()函数中的第三个参数用来设置一个与该套接字相关的“完成键(completion 当操作完成后,我们可以通过GetQueuedCompletion
正文
通常要开发网络应用程序并不是一件轻松的事情,不过,实际上只要掌握几个关键的原则也就可以了——创建和连接一个套接字,尝试进行连接,然后收发数据。真正难的是要写出一个可以接纳少则一个,多则数千个连接的网络应用程序。本文将讨论如何通过winsock2在WindowsNT和Windows2000上开发高扩展能力的Winsock应用程序。文章主要的焦点在客户机/服务器模型的服务器这一方,当然,其中的许多要点对模型的双方都适用。 API与响应规模
通过Win32的重叠I/O机制,应用程序可以提请一项I/O操作,重叠的操作请求在后台完成,而同一时间提请操作的线程去做其他的事情。等重 叠操作完成后线程收到有关的通知。这种机制对那些耗时的操作而言特别有用。不过,像Windows3.1上的WSAAsyncSelect()及Unix下的select()那样的函数虽然易于使用,但是它们不能满足响应规模的需要。而完成端口机制是针对操作系统内部进行了优化,在WindowsNT和Windows2000上,使用了完成端口的重叠I/O机制才能够真正扩大系统的响应规模。