习 题_Windows网络编程(第2版)_[共2页]
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
242
return 0;
}
程序的工作组流程如下。
•初始化Windows Sockets环境。
•创建完成端口对象CompletionPort。
•根据当前计算机中CPU的数量创建工作线程,并将新建的完成端口对象CompletionPort 作为线程的参数。
•创建监听Socket Listen,并将其绑定到本地地址的9990端口。
•在Socket Listen上进行监听。
•在while循环处理来自客户端的连接请求,接受连接,并将得到的与客户端进行通信的Socket Accept保存到PER_HANDLE_DATA结构体对象PerHandleData中。
将Socket Accept与前面的端口CompletionPort相关联。
•在Socket Accept上调用WSARecv()函数,异步接收Socket上来自客户端的数据。
WSARecv()函数立即返回,此时Socket Accept上不一定有客户端发送来的消息。
在工作线程中会检测完成端口对象的状态,并接收来自客户端的数据,再将这些数据发送回客户端程序。
一、选择题
1.下面不属于Socket编程模型的是()。
A.Select模型B.WSAAsyncSelect模型
C.WSAEventSelect模型D.完成例程模型
2.下面模型使用线程池处理异步I/O请求的是()。
A.Select模型B.WSAAsyncSelect模型
C.WSAEventSelect模型D.完成端口模型
3.在ioctlsocket()函数中使用()参数,并将argp参数设置为非0值,可以将Socket设置为非阻塞模式。
A.FIONBIO B.FIONREAD
C.SIOCATMARK D.FIONONBLOCK
4.在执行select()函数时如果出现错误则返回()。
A.0 B.−1
C.NULL D.SOCKET_ERROR
5.在WSAEventSelect模型中,调用WSAEventSelect()函数注册网络事件后,应用程序需要等待网络事件的发生,然后对网络事件进行处理。
调用后,WSAWaitForMultipleEvents()函数处于阻塞状态,直到下面()情况发生才会返回。
A.创建了监听Socket B.阻塞时间超过指定的超时时间
C.所有事件对象都处于未受信状态D.所有事件对象都被释放
二、填空题
1.Socket编程可以分为【1】和【2】两种开发模式。