- 1、本文档共126页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[工学]网络程序设计 IOCP与可伸缩网络程序
* 最开始创建一个完成端口时,唯一感兴趣的参数便是NumberOfConcurrentThreads(并发线程的数量);前面三个参数都会被忽略。 NumberOfConcurrentThreads参数的特殊之处在于,它定义了在一个完成端口上,同时允许执行的线程数量。理想情况下,我们希望每个处理器各自负责一个线程的运行,为完成端口提供服务,避免过于频繁的线程“场景”切换。若将该参数设为0,表明系统内安装了多少个处理器,便允许同时运行多少个线程! FileHandle参数指定一个要同完成端口关联在一起的套接字句柄。 ExistingCompletionPort参数指定的是一个现有的完成端口。 CompletionKey(完成键)参数则指定要与某个特定套接字句柄关联在一起的“句柄唯一数据”;在这个参数中,应用程序可保存与一个套接字对应的任意类型的信息。 * 因为在一个套接字首次与完成端口关联到一起的时候,那些数据便与一个特定的套接字句柄对应起来了。这些数据正是我们在进行CreateIoCompletionPort API调用的时候,通过CompletionKey参数传递的。如早先所述,应用程序可通过该参数传递任意类型的数据。 * lpOutputBuffer指向传递给AcceptEx函数接受客户第一块数据的缓冲区 dwReceriveDataLength参数lpOutputBuffer缓冲区的大小,必须与传递给AcceptEx函数的一致 dwlocalAddressLength为本地地址预留的空间大小,必须与传递给AcceptEx函数的一致 dwRemoteAddressLength为远程地址预留的空间大小,必须与传递给AcceptEx函数的一致 LocalSockaddr用来返回连接的本地地址 LocalSockaddrLength用来返回本地的地址的长度 RemoteSockaddr用来返回远程地址 RemoteSockaddLength用来返回远程地址的长度 * 这是非常有效的,因为整个数据传输可在内核模式中进行。也就是说,如果你的应用从指定的文件中读取一堆数据,然后用send或WSASend时,涉及到“用户模式到内核模式传输”的发送调用就有若干个。有了TransmitFile ,整个读取和发送数据的进程就可在内核模式中进行。 hSocket参数用于识别已连接上的套接字(文件的传输便在该套接字上进行)。 nFile参数是一个句柄,该句柄指向一个已打开的套接字(即即将发送的文件)。 nNumberOfBytesToWrite表明写入多少指定文件中的字节。投递0表示将发送整个文件。 nNumberOfBytesPerSend参数则表明写操作所用的发送长度。 例如,指定2048会引起TransmitFile在套接字上以2KB数据块的形式发送指定文件。投递0表示采用默认的发送长度。 lpOverlapped参数指定一个OVERLAPPED结构,该结构用于重叠I / O模式。 lpTransmitBuffers,是一个TRANSMIT_FILE_BUFFERS结构,其中包含文件传输之前和之后准备发送的数据。 TransmitFile的最后一个参数是dwFlags,用于指定即将对TransmitFile行为产生影响的标志。 * hSocket已经建立的套接字句柄,并不要求时面向连接的套接字 lpPacketArray封包元素数组,描述了要传送的数据 nElementCount是lpPacketArray数组中元素的数量 nSendSize发送操作每次发送数据的大小 lpOverlapped同TransmitFile中的参数一样,是可选的重叠结构 dwFlags是标志。 * * * // 增加套接字上的重叠I/O计数和读序列号计数 pContext-nOutstandingRecv ++; pContext-nReadSequence ++; ::LeaveCriticalSection(pContext-Lock); return TRUE; } * * PostSend() BOOL CIOCPServer::PostSend(CIOCPContext *pContext, CIOCPBuffer *pBuffer) {// 跟踪投递的发送的数量,防止用户仅发送数据而不接收,导致服务器抛出大量发送操作 if(pContext-nOutstandingSend m_nMaxSends) return FALSE; // 设置I/O类型,增加套接字上的重叠I/O计数 pBuffer-nOperation = OP_WRITE; // 投递此重叠I/O DWORD dwBytes; DWORD dwFlags
您可能关注的文档
- [工学]第四章 有哪些信誉好的足球投注网站3—与或图有哪些信誉好的足球投注网站.ppt
- [工学]第四章 混凝土连续梁桥.ppt
- [工学]第四章 时变电磁场.ppt
- [工学]第四章 数字集成电路设计技术.ppt
- [工学]第四章 汇编语言程序开发工具.pdf
- [工学]第四章 桥梁涵洞养护.ppt
- [工学]第四章 油藏工程动态分析方法.pdf
- [工学]第四章 时变电磁场1.ppt
- [工学]第四章 温度测量第3次07.ppt
- [工学]第四章 电力系统稳定分析与继电保护基础第二十二讲 电力系统保护基础1_687407066.pdf
- 2023-2024学年安徽省合肥市六校联盟高一(上)期中数学试卷【答案版】.pdf
- 2023-2024学年安徽省淮北十二中高一(上)期中数学试卷【答案版】.pdf
- 2023-2024学年安徽省六安一中高一(上)期中数学试卷【答案版】.pdf
- 2023-2024学年安徽省六安二中河西校区高一(上)期中数学试卷【答案版】.pdf
- 2023-2024学年安徽省高一(上)期中数学试卷【答案版】.pdf
- 2023-2024学年安徽省合肥市庐江五中高一(上)期中数学试卷【答案版】.docx
- 海岸带管理的方法课件.pptx
- 泌尿系结石健康教育护理课件.pptx
- 没有比加西亚·马尔克斯更甚者了莫言课件.pptx
- 汽车总体结构认识以及发动机拆装课件.pptx
最近下载
- 机械通气患者的口腔护理PPT.pptx
- 基础写作教程(第三版)全套PPT课件.pptx
- 2024年吉林卷生物高考试卷(原卷+答案).pdf VIP
- 第四单元大情境试卷-2023-2024学年语文三年级下册统编版.docx VIP
- Unit 3 Amazing animals Part A 第一课时-三年级英语上学期课件(人教PEP版2024新).pptx
- 部编版-语文五上-七单元集体备课.pptx VIP
- 蒙代尔弗莱明模型与ddaa模型比较分析.pdf
- 芭蕾基训项目课程标准.pdf VIP
- ppt:大学生如何弘扬劳动精神.pptx VIP
- Q/CR 749.1-2020-铁路桥梁钢结构及构件保护涂装与涂料 第1部分:钢梁.pdf
文档评论(0)