1 / 10
文档名称:

完成端口模型程序设计.docx

格式:docx   大小:103KB   页数:10页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

完成端口模型程序设计.docx

上传人:daoqqzhuanyongyou2 2022/6/21 文件大小:103 KB

下载得到文件列表

完成端口模型程序设计.docx

相关文档

文档介绍

文档介绍:完成端口模型程序设计
实验目的
通过本次实验,掌握Windows socket的IO完成端口(I0CP)模型开发, 利用编程能力,编写程序,利用服务线程,查看I/O操作的结果信息。深入了解 相关知识。
实验任务
首先查阅与完成端口模nStatus返回时通过该参数获取套接字的IO操作相关信息。 5:取消异步操作。
当关闭套接字时,如果此时系统还有未完成的异步操作,应用程序可 以调用CancelIo函数取消等待执行的异步操作。

| 创建完成端口 ]
°
|创建服务线程. |
| 接受客户端请求 |
I
声明完成健结构,它包 |
含客户端套接字信息 |
I
调用createiocompletionport将套接字 与完成端口关联起来,并传入完成锂
I
声明V。操作结构,它包含每次重叠V。时的 操作信息
I
在服务线程中,调用函数等待I/口操作结果
(Eet Queue de cimu let icirimtum )

///////////////////////////////////////////
// 文件
#include "../common/"
#include <>
#include <>
#include "”
//初始化Winsock库
CInitSock theSock;
int main()
{
USHORT nPort = 4567; //此服务器监听的端口号
//创建监听套节字
SOCKET sListen = ::socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); sockaddr_in sin;
= AF_INET;
= htons(nPort);
= INADDR_ANY;
if(::bind(sListen, (sockaddr*)&sin, sizeof(sin)) == SOCKET_ERROR)
{
printf(" Failed bind() \n");
return -1;
}
::listen(sListen, 200);
//创建事件对象,并关联到监听的套节字
WSAEVENT event = ::WSACreateEvent();
::WSAEventSelect(sListen, event, FD_ACCEPT|FD_CLOSE);
::InitializeCriticalSection(&g_cs);
//处理客户连接请求,打印状态信息
while(TRUE)
{
int nRet = ::WaitForSingleObject(event, 5*1000); if(nRet == WAIT_FAILED)
{
printf(" Failed WaitForSingleObject() \n"); break;
}
else if(nRet == WSA_WAIT_TIMEOUT) // 定