完成端口io完成端口 和 epllo的区别

完成端口  时间:2021-05-29  阅读:()

完成端口 为什么正常closesocket还是服务器还是会出现异常退出

你好。

和超时没关系,一般SOCKET在调用recv函数时如果有数据时才返回, 如果没有数据时就在recv函数等待直至有数据或SOCKET关闭或网络异常, 如果是SOCKET被关闭时,recv返回0,异常时返回-1, 用GetLastError可以察看具体的错误。

(只在socket为同步方式有效) 如果我的回答没能帮助您,请继续追问。

请教GetQueuedCompletionStatus函数如何通知完成端口管理新线程?

GetQueuedCompletionStatus函数有个OVERLAPPED结构,很多资料上都采用不同的结构体来扩展该结构,比如有的资料定义: typedef struct _OVERLAPPEDPLUS { OVERLAPPED ol; SOCKET s, sclient; int OpCode; WSABUF wbuf; DWORD dwBytes, dwFlags; }OVERLAPPEDPLUS; 然后,当GetQueuedCompletionStatus(hIocp, &dwBytesXfered,(PULONG_PTR)&PerHandleKey, &Overlap, INFINITE);函数返回时候,人们常用OverlapPlus = CONTAINING_RECORD(Overlap, OVERLAPPEDPLUS, ol)得到一些信息。

比如此时端口上完成的是什么操作,数据是什么等,还有,系统如何做到自动填充上述的结构的,也就是说,系统怎么知道在Overlap->OpCode存放的应该是操作类型,如读,写操作,而在Overlap->wbuf存放的应该是读写数据。

Overlap->OpCode,操作类型是在投递WSASend,WSARecv的时候,由你自己指定填充这个字段。

因为是非堵塞的,等于投递到与套接字相关联的完成端口上,系统会把把WSASend对应的缓冲区提交到底层缓冲,也可以把WSARecv投递的缓冲区,用接收到的数据填充,每一个WSASend,WSARecv,都应有新申请一个overlaspped plus结构提交,以存放本次投递的IO操作的相关数据,——单IO操作数据所以工作器线程中,从完成端口队列中get得到一个完成包的时候,可以根据单句柄数据知道在这个完成端口上是哪一个套接字投递的IO操作完成了,从get到的overlapped中得到相关的已经完成IO数据和信息,并作相应的处理。

比如投递了1M,完成包却告知只完成512K,那么你就知道要把余下的512K继续投递WSASend,当然上一个WSASend的Overlapped这个时候可以重用到下一个WSASend中,这个是允许的,可以用一个字段存放全部1M,把余下未Send成功512k放到wbuf中,继续投递或者投递WSARecv1M数据,却收到一个512K的完成通知,那么你要继续投递WSARecv,当然前一个WSARecv的overlapped也可以重用,不过需要一些处理,把已经接收到的512K保存到某个字段中,再投递一个512K的请求去接收完成端口内部,对投递的Overlapped的填充,好像只有WSARecv的时候填充WSABUF,其他都是投递IO前,代码中显式填充,并投递的。

至于完成了多少个字节,是在lpNumberOfBytes中得到。

对GetQueuedCompletionStatus函数解释: 实现从指定的IOCP获取CP。

当CP队列为空时,对此函数的调用将被阻塞,而不是一直等待I/O的完成。

当CP队列不为空时,被阻塞的线程将以后进先出(LIFO)顺序被释放。

对于IOCP机制,它允许多线程并发调用GetQueuedCompletionStatus函数,最大并发数是在调用CreateIoCompletionPort函数时指定的,超出最大并发数的调用线程,将被阻塞。

函数解释如下: 声明: BOOL GetQueuedCompletionStatus( HANDLE CompletionPort, LPDWORD lpNumberOfBytes, PULONG_PTR lpCompletionKey, LPOVERLAPPED *lpOverlapped, DWORD dwMilliseconds); 调用参数: CompletionPort:指定的IOCP,该值由CreateIoCompletionPort函数创建。

lpnumberofbytes:一次完成后的I/O操作所传送数据的字节数。

pletionkey:当文件I/O操作完成后,用于存放与之关联的CK。

lpoverlapped:为调用IOCP机制所引用的OVERLAPPED结构。

dwmilliseconds:用于指定调用者等待CP的时间。

返回值: 调用成功,则返回非零数值,相关数据存于lpNumberOfBytes、lpCompletionKey、lpCompletionKey变量中。

失败则返回零值。

完成端口内存池设计时的想法,请大家看看我想的对不对

实际效果这真的是这样吗?不太见得。

换一个角度看,计算机管理的内存就是我们的内存池。

不是吗? 能作为服务器的机子,一般都是专门的跑一个服务程序。

操作系统管理的内存本身就是我们的内存池了。

其次,在应用程序唯一的情况下,内存的碎片跟你的程序中的new/delete模块尺寸才是最主要的。

比如游戏服务器中,最主要的对象产生就是物品和人物。

那么在设计上往往可以规定好尺寸的种类,或者静态分配一个数组,来模拟一些链表的实现。

所以,在一些必须的new/delete模块上,把系统的内存管理看成内存池即可;更重要的是在你的应用程序中掌握好对象的尺寸。

windows系统中怎么关闭和开启端口

第一步,点击“开始”菜单/设置/控制面板/管理工具,双击打开“本地安全策略”,选中“IP 安全策略,在本地计算机”,在右边窗格的空白位置右击鼠标,弹出快捷菜单,选择“创建 IP 安全策略”(如右图),于是弹出一个向导。

在向导中点击“下一步”按钮,为新的安全策略命名;再按“下一步”,则显示“安全通信请求”画面,在画面上把“激活默认相应规则”左边的钩去掉,点击“完成”按钮就创建了一个新的IP 安全策略。

第二步,右击该IP安全策略,在“属性”对话框中,把“使用添加向导”左边的钩去掉,然后单击“添加”按钮添加新的规则,随后弹出“新规则属性”对话框,在画面上点击“添加”按钮,弹出IP筛选器列表窗口;在列表中,首先把“使用添加向导”左边的钩去掉,然后再点击右边的“添加”按钮添加新的筛选器。

第三步,进入“筛选器属性”对话框,首先看到的是寻址,源地址选“任何 IP 地址”,目标地址选“我的 IP 地址”;点击“协议”选项卡,在“选择协议类型”的下拉列表中选择“TCP”,然后在“到此端口”下的文本框中输入“135”,点击“确定”按钮(如左图),这样就添加了一个屏蔽 TCP 135(RPC)端口的筛选器,它可以防止外界通过135端口连上你的电脑。

点击“确定”后回到筛选器列表的对话框,可以看到已经添加了一条策略,重复以上步骤继续添加 TCP 137、139、445、593 端口和 UDP 135、139、445 端口,为它们建立相应的筛选器。

重复以上步骤添加TCP 1025、2745、3127、6129、3389 端口的屏蔽策略,建立好上述端口的筛选器,最后点击“确定”按钮。

第四步,在“新规则属性”对话框中,选择“新 IP 筛选器列表”,然后点击其左边的圆圈上加一个点,表示已经激活,最后点击“筛选器操作”选项卡。

在“筛选器操作”选项卡中,把“使用添加向导”左边的钩去掉,点击“添加”按钮,添加“阻止”操作(右图):在“新筛选器操作属性”的“安全措施”选项卡中,选择“阻止”,然后点击“确定”按钮。

第五步、进入“新规则属性”对话框,点击“新筛选器操作”,其左边的圆圈会加了一个点,表示已经激活,点击“关闭”按钮,关闭对话框;最后回到“新IP安全策略属性”对话框,在“新的IP筛选器列表”左边打钩,按“确定”按钮关闭对话框。

在“本地安全策略”窗口,用鼠标右击新添加的 IP 安全策略,然后选择“指派”。

于是重新启动后,电脑中上述网络端口就被关闭了,病毒和黑客再也不能连上这些端口,从而保护了你的电脑。

打印机安装怎么选择打印端口?

一般电脑会自动识别打印端口,只需要安装打印机的驱动即可。

如果无法自动识别的话,可以打开控制面板,选择查看设备和打印机,右键单击打印机,选择“属性”,在属性对话框点击“端口”,在这里即可自由选择端口,单击确定完成选择。

1、首先,点击电脑左下角开始菜单。

2、然后选择设备和打印机,如图所示。

3、接着选择你要修改的打印机,右击选择打印机属性。

5、在打印机属性下选择端口,如图所示。

6、最后在端口内选择COM1,点击应用后再点击确定即可。

io完成端口 和 epllo的区别

展开全部 完成端口 完成端口基本上公认为一种在windows服务平台上比较成熟和高效的IO方法,利用完成端口进行重叠I/O的技术在WindowsNT和WIndows2000上提供了真正的可扩展性。

完成端口和Windows Socket2.0结合可以开发出支持大量连接的网络服务程序。

搬瓦工最新套餐KVM,CN2线路

搬瓦工在国内非常流行的主机商,以提供低价的vps著称.不过近几年价格逐渐攀升.不过稳定性和速度一向不错.依然深受国内vps爱好者喜爱.新上线的套餐经常卖到断货.支持支付宝,paypal很方便购买和使用.官网网站:https://www.bandwagonhost.com[不能直接访问,已墙]https://www.bwh88.net[有些地区不能直接访问]https://www.bwh81.net...

LOCVPS-2021年6月香港便宜vps宽带升级,充值就送代金券,其它八折优惠!

LOCVPS怎么样?LOCVPS是一家成立于2011年的稳定老牌国人商家,目前提供中国香港、韩国、美国、日本、新加坡、德国、荷兰等区域VPS服务器,所有机房Ping延迟低,国内速度优秀,非常适合建站和远程办公,所有机房Ping延迟低,国内速度优秀,非常适合做站。XEN架构产品的特点是小带宽无限流量、不超售!KVM架构是目前比较流行的虚拟化技术,大带宽,生态发展比较全面!所有大家可以根据自己业务需求...

Vultr再次发布充值多少送多少活动

昨天我们很多小伙伴们应该都有看到,包括有隔壁的一些博主们都有发布Vultr商家新的新用户注册福利活动。以前是有赠送100美元有效期30天的,这次改成有效期14天。早年才开始的时候有效期是60天的,这个是商家行为,主要还是吸引到我们后续的充值使用,毕竟他们的体验金赠送,在同类商家中算是比较大方的。昨天活动内容:重新调整Vultr新注册用户赠送100美元奖励金有效期14天今天早上群里的朋友告诉我,两年...

完成端口为你推荐
小米云服务器登录你好 我想咨询下 要登录小米云服务除了手机信息验证还有其他方法吗?日本名字大全日本女生名字大全?云服务厂商目前云灾备服务主要有那几种?阿里云如何重装系统怎么重装系统,如何重装系统,重装系统步骤阿里云如何重装系统怎么重新安装系统?怎么架设服务器如何搭建游戏服务器海外idc我想做境外IDC 主营VPS服务 我需要什么 境外独服linux比较廉价 刚刚起家希望给个廉价的方案!域名分类域名如何分类?在线接收验证码如何使用验证码接收平台在线获取验证码payoneer卡官网登录payoneer卡的钱如何转到香港汇丰银行里?怎么转,手续费是多少。求详细解答
什么是二级域名 怎样申请域名 raksmart 512m 最好看的qq空间 发包服务器 全站静态化 美国在线代理服务器 申请网页 web服务器搭建 德隆中文网 广州服务器托管 hdroad ipower alexa搜 卡巴斯基免费版 日本小学生 shuangshiyi 远程主机强迫关闭了一个现有的连接 主机托管 更多