1.先要创建一个完成端口。
2.创建一个或多个工作线程,以便在I/O请求投递给完成端口后,为完成端口提供服务。
3.将套接字与完成端口关联。
根据windows 网络编程一书:构架基本框架如下:
1.创建一个完成端口,第4个参数为0.它指定在完成端口上每个处理器一次只允许执行一个工作线程。
2.判断系统的处理器个数。
3.根据处理器个数和可以预见的工作线程,提供一定数据的工作线程。
4.建立监听套接字,在指定端口监听连接请求。
5.根据情况用accept接受连接请求。
6.创建一个数据结构,用于容纳单句柄数据,同时在结构中存入接受的套接字句柄。
7.将accpet返回的新套接字句柄同完成端口关联到一起。通过CompletionKey参数,将单句柄数据结构传递给CreateIoCompletionPort。
8.在已接受的连接上I/O操作。
自己理解:
在完成端口程序中,要理解两个重要概念:单句柄数据,单I/O操作数据。
单句柄数据:与特定套接字句柄关联在一起的数据。当在监听端口上收到连接请求后,就获得一个套接字句柄,这时要把套接字句柄和完成端口关联起来,要用到单句柄数据,这个单句柄数据包含套接字句柄,以及与这个套接字有关的信息。
单I/O数据:这个数据要包括的第一个数据应该是一个OVERLAPPED结构,然后要包括进行WSARecv和 WASSend等操作时的数据,以及指示操作类型的字段。
阅读(877) | 评论(0) | 转发(0) |