学习
实践
活动
工具
TVP
写文章

windows完成端口(二)

系列目录 windows完成端口(一) windows完成端口(二) windows完成端口(三) windows完成端口(四) windows完成端口(五) windows完成端口(六) 1 不知道你是否记得前面中说过每消耗一个预先准备客户端的 获取对端和本端的ip地址和端口号,即AcceptEx的 第三个参数lpOutputBuffer中拿(这一步,不是必须) 2. 比如可以在新连接接收成功之后,立即准备给对端发数据;或者在收到对端数据的时候准备给对端发数据;在发送数据完成后准备收对端数据。 //调用WSARecv准备收取数据工作(这一步,不是必须) } } } 由于公众号文章字数有限,您可以接着阅读下一篇:《windows完成端口 (三)》 系列目录 windows完成端口(一) windows完成端口(二) windows完成端口(三) windows完成端口(四) windows完成端口(五) windows完成端口(六)

718110

windows完成端口(三)

系列目录 windows完成端口(一) windows完成端口(二) windows完成端口(三) windows完成端口(四) windows完成端口(五) windows完成端口(六) 1 现在还剩下最后一个问题 我们小结一下,掌握完成端口的关键在于理解以下几点: 完成端口绑定了某个socket后,不仅其事件的读写检测由操作系统完成,而且就算是接受新连接、收发数据的动作也是由操作系统代劳了,操作系统完成后会通知你 初始化准备好的各种缓冲区如何在工作线程里面引用到的关键就在于绑定完成端口时CompletionKey和准备收发缓冲区时OVERLAPPED结构体的使用, CompletionKey对应PER Socket 由于公众号文章字数有限,您可以接着阅读下一篇:《windows完成端口(四)》 系列目录 windows完成端口(一) windows完成端口(二) windows完成端口(三) windows完成端口 (四) windows完成端口(五) windows完成端口(六)

60640
  • 广告
    关闭

    2022腾讯全球数字生态大会

    11月30-12月1日,邀您一起“数实创新,产业共进”!

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    windows完成端口(一)

    系列目录 windows完成端口(一) windows完成端口(二) windows完成端口(三) windows完成端口(四) windows完成端口(五) windows完成端口(六) 本人很多年前接触完成端口以来 这篇文章将从为什么这么做的角度来解释完成端口的一些重难点。 使用完成端口一般按以下步骤(这里以网络服务器接受客户端连接并与客户端进行网络通信为例): //步骤1:创建完成端口 //步骤2:创建侦听socket并将侦听socket绑定到完成端口上 // 有,这就是windows的完成端口模型。 (二)》 系列目录 windows完成端口(一) windows完成端口(二) windows完成端口(三) windows完成端口(四) windows完成端口(五) windows完成端口(六)

    1.4K50

    windows完成端口(五)

    系列目录 windows完成端口(一) windows完成端口(二) windows完成端口(三) windows完成端口(四) windows完成端口(五) windows完成端口(六) #include //////////////////////////////////////////////////// // 工作者线程: 为IOCP请求服务的工作者线程 // 也就是每当完成端口上出现了完成数据包 ->m_Socket ); return false; } else { TRACE(_T("Listen Socket绑定完成端口 } //////////////////////////////////////////////////////////// 由于公众号文章字数有限,您可以接着阅读下一篇:《windows完成端口 (六)》 系列目录 windows完成端口(一) windows完成端口(二) windows完成端口(三) windows完成端口(四) windows完成端口(五) windows完成端口(六)

    1K70

    windows完成端口(四)

    系列目录 windows完成端口(一) windows完成端口(二) windows完成端口(三) windows完成端口(四) windows完成端口(五) windows完成端口(六) 下面给出上文中使用到的对完成端口模型封装的类的全部代码 ====================== Purpose: * 这个类CIOCPModel是本代码的核心类, 用于说明WinSock服务器端编程模型中的 完成端口 * 其中的PER_IO_DATA结构体 是封装了用于每一个重叠操作的参数 PER_HANDLE_DATA是封装了用于每一个Socket的参数, 也就是用于每一个完成端口的参数 * 详细的文档说明请参考 http://blog.csdn.net/PiggyXP Notes: * 具体讲明了服务器端建立完成端口、建立工作者线程、 投递Recv (五)》 系列目录 windows完成端口(一) windows完成端口(二) windows完成端口(三) windows完成端口(四) windows完成端口(五) windows完成端口(六)

    83370

    windows完成端口(六)

    系列目录 windows完成端口(一) windows完成端口(二) windows完成端口(三) windows完成端口(四) windows完成端口(五) windows完成端口(六) // 最后释放掉所有资源 ====================================================================== // // 投递完成端口请求 bool CIOCPModel::_AssociateWithIOCP( PER_SOCKET_CONTEXT *pContext ) { // 将用于和客户端通信的SOCKET绑定到完成端口中 参考链接:http://blog.csdn.net/piggyxp/article/details/6922277 系列目录 windows完成端口(一) windows完成端口(二) windows完成端口 (三) windows完成端口(四) windows完成端口(五) windows完成端口(六)

    71550

    WinSock 完成端口模型

    处于这个思想,WinSock提供了一个新的模型——完成端口模型。 完成端口简介 完成端口本质上是一个线程池的模型,它需要我们创建对应的线程放在那,当完成通知到来时,他会直接执行线程。 在文件中我们也提到过完成端口,其实我们利用Linux上一切皆文件的思想来考虑这个问题就可以很方便的理解,既然我们需要异步的方式来读写网卡的信息,这与读写文件的方式类似,既然文件中存在完成端口模型,网络上存在也就不足为奇了 对于完成端口Windows没有引入新的API函数,而是仍然采用文件中一堆相关的函数。 如果是要将文件句柄与完成端口绑定,这个参数必须穿入一个支持完成端口的文件句柄。在Winsock中如果要绑定SOCKET到完成端口只需要将SOCKET强转为HANDLE。 第二个参数是一个已知的完成端口句柄,如果是创建完成端口,这个参数填入NULL。 第三个参数是一个LONG型的指针,它作为一个标志,由完成通知传入完成线程中,用来标识不同的完成通知。

    40420

    完成端口IO模型

    IOCP(IO完成端口)是一种伸缩性的IO模型,广泛应用于各种类型的高性能服务器,如Apache等。 IO完成端口,应用程序使用线程池处理异步IO请求的一种机制。 最初设计:   应用程序发出一些异步IO请求,设备驱动把这些工作项目排序到完成端口,在完成端口上等待线程池便可以处理这些完成IO。 1 创建完成端口对象                               调用CreateIoCompletionPort函数创建一个完成端口对象,winsock使用这个对象为任意数量的套接字句柄管理 );                                  2 IO服务器线程和完成端口                       关联套接字之前,创建一个或者多个工作线程,在完成端口上执行并处理投递到完成端口上的 IO操作完成后,系统向完成端口对象发送一个完成通知封包。

    49980

    完成端口与线程池的关系_端口触发

    先说IOCP,其实思路很清晰: 1.声明一个数据结构,用来存放客户套接字和客户信息 2.声明一个包含OVERLAPPED字段的I/O结构 3.创建完成端口 4.创建服务线程 5.接收客户端连接请求 6.关联这个套接字到完成端口中 7.服务线程中不断的等待I/O结果,在结果中提供服务和根据需要发起另一个异步操作 1.创建一个监听套接字 2.将监听套接字关联到完成端口中 3.对监听套接字调用bind()、listen() 4.通过WSAIoctl获取AcceptEx }COMPLETION_KEY, *LP_COMPLETION_KEY; /// //完成端口句柄 HANDLE g_hComPort = NULL; BOOL g_bRun = FALSE; BOOL = WSASocket( AF_INET, SOCK_STREAM, 0, NULL, 0, WSA_FLAG_OVERLAPPED ); g_sListen = sListen; //将监听套接字与完成端口绑定

    8730

    DELPHI中完成端口(IOCP)的简单

    TempArray+TempCurr,SorucePacket+TempLen,SPLen-TempLen); TempCurr:=TempCurr+SPLen-TempLen; //已经将数据拷贝完成

    58610

    windows完成端口api了解一下

    一个I/O完成端口关联一个打开文件的实例使应用程序可以收到包括这个文件异步I/O操作的完成通知。 ExistingCompletionPort 完成端口句柄 如果指定一个已经存在的完成端口,函数将关联FileHandle 指定的文件,并返回已存在的完成端口句柄,函数不会创建一个新的完成端口。 如果这个参数为NULL,函数创建一个与FileHandle指定的文 件关联的完成端口,并返回一个新的完成端口句柄。 CompletionKey 单文件句柄,包含指定文件每次IO完成包数据信息。 当 你执行一个已经关联一个完成端口的文件I/O操作,I/O系统将会在这个I/O操作完成的时候向I/O完成端口发送一个完成通知包,I/O完成端口将以先 进先出的方式放置这个I/O完成通知包,并使用GetQueuedCompletionStatus 虽然允许任何数量的 线程来调用GetQueuedCompletionStatus 等待一个I/O完成端口,但每个线程只能同时间内关联一个I/O完成端口,且此端口是线程最后检查的那个端口

    34120

    【Windows网络编程】完成端口IOCP介绍(超详细)

    这篇文档我非常详细并且图文并茂的介绍了关于网络编程模型中完成端口的方方面面的信息,从API的用法到使用的步骤,从完成端口的实现机理到实际使用的注意事项,都有所涉及,并且为了让朋友们更直观的体会完成端口的用法 完成端口的优点 2. 完成端口程序的运行演示 3. 完成端口的相关概念 4. 完成端口的基本流程 5. 完成端口的使用详解 6. 实际应用中应该要注意的地方 一. 对于重叠结构的内部细节我这里就不过多的解释了,就把它当成和其他内核对象一样,不需要深究其实现机制,只要会使用就可以了,想要了解更多重叠结构内部的朋友,请去翻阅Jeffrey Richter的《Windows via C/C+ 熟悉或者不熟悉多线程编程的朋友,都应该知道,如果在线程睡眠的时候,简单粗暴的就把线程关闭掉的话,那是会一个很可怕的事情,因为很多线程体内很多资源都来不及释放掉,无论是这些资源最后是否会被操作系统回收,我们作为一个C+ ,这都是作为一个合格的C++程序员的基本功,在这里就不多说了,如果还是有不太清楚的朋友,请参考我的示例代码中的 StopListen() 和DeInitialize() 函数。

    21720

    关于windows完成端口(IOCP)的一些理解(二)

    获取对端和本端的ip地址和端口号,即AcceptEx的 第三个参数lpOutputBuffer中拿(这一步,不是必须) 2. 比如可以在新连接接收成功之后,立即准备给对端发数据;或者在收到对端数据的时候准备给对端发数据;在发送数据完成后准备收对端数据。 获取对端和本端的ip地址和端口号, 即AcceptEx的第三个参数lpOutputBuffer中拿(这一步,不是必须) 2.

    1.1K90

    关于windows完成端口(IOCP)的一些理解(三)

    系列目录 关于windows完成端口(IOCP)的一些理解(一) 关于windows完成端口(IOCP)的一些理解(二) 关于windows完成端口(IOCP)的一些理解(三) 关于windows完成端口 我们小结一下,掌握完成端口的关键在于理解以下几点: 完成端口绑定了某个socket后,不仅其事件的读写检测由操作系统完成,而且就算是接受新连接、收发数据的动作也是由操作系统代劳了,操作系统完成后会通知你 由于公众号文章字数有限,您可以接着阅读下一篇:《关于windows完成端口(IOCP)的一些理解(四)》 系列目录 关于windows完成端口(IOCP)的一些理解(一) 关于windows完成端口(IOCP )的一些理解(二) 关于windows完成端口(IOCP)的一些理解(三) 关于windows完成端口(IOCP)的一些理解(四) 关于windows完成端口(IOCP)的一些理解(五) 关于windows 完成端口(IOCP)的一些理解(六)

    1K70

    关于windows完成端口(IOCP)的一些理解(五)

    系列目录 关于windows完成端口(IOCP)的一些理解(一) 关于windows完成端口(IOCP)的一些理解(二) 关于windows完成端口(IOCP)的一些理解(三) 关于windows完成端口 (IOCP)的一些理解(四) 关于windows完成端口(IOCP)的一些理解(五) 关于windows完成端口(IOCP)的一些理解(六) #include "StdAfx.h" #include //////////////////////////////////////////////////// // 工作者线程: 为IOCP请求服务的工作者线程 // 也就是每当完成端口上出现了完成数据包 (IOCP)的一些理解(六)》 系列目录 关于windows完成端口(IOCP)的一些理解(一) 关于windows完成端口(IOCP)的一些理解(二) 关于windows完成端口(IOCP)的一些理解 (三) 关于windows完成端口(IOCP)的一些理解(四) 关于windows完成端口(IOCP)的一些理解(五) 关于windows完成端口(IOCP)的一些理解(六)

    1.3K120

    关于windows完成端口(IOCP)的一些理解(一)

    系列目录 关于windows完成端口(IOCP)的一些理解(一) 关于windows完成端口(IOCP)的一些理解(二) 关于windows完成端口(IOCP)的一些理解(三) 关于windows完成端口 (IOCP)的一些理解(四) 关于windows完成端口(IOCP)的一些理解(五) 关于windows完成端口(IOCP)的一些理解(六) 本人很多年前接触完成端口以来,期间学习和练习了很多次,本以为自己真正地理解了其原理 使用完成端口一般按以下步骤(这里以网络服务器接受客户端连接并与客户端进行网络通信为例): //步骤1:创建完成端口 //步骤2:创建侦听socket并将侦听socket绑定到完成端口上 // 有,这就是windows的完成端口模型。 (IOCP)的一些理解(一) 关于windows完成端口(IOCP)的一些理解(二) 关于windows完成端口(IOCP)的一些理解(三) 关于windows完成端口(IOCP)的一些理解(四) 关于

    5.5K90

    端口的常用端口

    0-1023是公认端口号,即已经公认定义或为将要公认定义的软件保留的,而1024-65535是并没有公共定义的端口号,用户可以自己定义这些端口的作用。 那么端口号到底有什么作用呢? 上一次提到提到在一个经过OSI第四层传输层封装的数据段的第四层报头里包含两个端口号,既源端口号和目的端口号,目的端口号的作用上面已经介绍了,下面让我们了解一下原端口号吧。 而B收到数据后会读取数据包的源端口号和目的端口号,然后记录下来,当软件创建了要返回的数据后就把原来数据包中的原端口号作为目的端口号,而把自己的端口号作为原端口号,也就是说把收到的数据包中的原和目的反过来 ,然后再送回A,A再重复这个过程如此反复直到数据传输完成。 记住mountd可运行于任何端口(到底是哪个端口,需要在端口111做portmap查询),只是Linux默认端口是635,就像NFS通常运行于2049端口

    2.7K61

    完成端口(CompletionPort)详解 - 手把手教你玩转网络编程系列之三

    这篇文档我非常详细并且图文并茂的介绍了关于网络编程模型中完成端口的方方面面的信息,从API的用法到使用的步骤,从完成端口的实现机理到实际使用的注意事项,都有所涉及,并且为了让朋友们更直观的体会完成端口的用法 完成端口的优点 2. 完成端口程序的运行演示 3. 完成端口的相关概念 4. 完成端口的基本流程 5. 完成端口的使用详解 6. 实际应用中应该要注意的地方 一. 对于重叠结构的内部细节我这里就不过多的解释了,就把它当成和其他内核对象一样,不需要深究其实现机制,只要会使用就可以了,想要了解更多重叠结构内部的朋友,请去翻阅Jeffrey Richter的《Windows via C/C+ 熟悉或者不熟悉多线程编程的朋友,都应该知道,如果在线程睡眠的时候,简单粗暴的就把线程关闭掉的话,那是会一个很可怕的事情,因为很多线程体内很多资源都来不及释放掉,无论是这些资源最后是否会被操作系统回收,我们作为一个C+ ,这都是作为一个合格的C++程序员的基本功,在这里就不多说了,如果还是有不太清楚的朋友,请参考我的示例代码中的 StopListen() 和DeInitialize() 函数。

    34880

    HTTP常见端口_8443端口

    常见端口地点 HTTP服务器,默认的端口号为80/tcp(木马Executor开放此端口); HTTPS(securely transferring web pages)服务器,默认的端口号为443 管理工具,默认的端口号为9090; JBOSS,默认的端口号为8080; TOMCAT,默认的端口号为8080; WIN2003远程登陆,默认的端口号为3389; Symantec AV/Filter for MSE ,默认端口号为 8081; Oracle 数据库,默认的端口号为1521; ORACLE EMCTL,默认的端口号为1158; Oracle XDB( XML 数据库),默认的端口号为 RPC端口 9000 : 非高可用的HDFS RPC端口 8088 : Yarn 的WEB UI 接口 8485 : JournalNode 的RPC端口 8019 : ZKFC端口 19888 UI 管理端口 Hive 9083 : metastore服务默认监听端口 10000:Hive 的JDBC端口 Spark 7077 : spark 的master与worker进行通讯的端口

    12030

    端口占用如何关闭端口

    右键命令提示符选择以管理员身份进入) 2.输入netstat -aon|findstr "端口号" 3.输入taskkill /pid 对应的pid /f 实例如下: 4.注意事项,如果提示失败应该是权限问题

    84020

    扫码关注腾讯云开发者

    领取腾讯云代金券