关于完成端口IOCP异步接收连接函数AcceptEx注意事项

AcceptEx方法有一个参数dwReceiveDataLength,指明了在收到连接后是否需要收到第一包数据才返回。需要注意的是,如果

dwReceiveDataLength=0,则当接收到一个连接后立即返回,如果dwReceiveDataLength不等于0,则在接收到连接后,必须

等到客户端发来第一包数据才返回。可根据实际需要设定此参数。这就是有人说明明我已经建立连接,为何服务端收不到ACCEPT事件的原因。

特别要注意,当dwReceiveDataLength设置为0后,在使用m_lpfnGetAcceptExSockaddrs方法取得客户端地址时,dwReceiveDataLength也要相应的写为0,

否则取出的地址为0.0.0.0

关于完成端口IOCP异步接收连接函数AcceptEx注意事项,布布扣,bubuko.com

时间: 2024-10-06 07:51:24

关于完成端口IOCP异步接收连接函数AcceptEx注意事项的相关文章

socket 异步接收连接和接收数据

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Net.Sockets; using Syst

完成端口(IOCP)怎么判断某个连接是否断开

完成端口函数: [csharp] view plaincopy BOOL GetQueuedCompletionStatus( HANDLE CompletionPort, LPDWORD lpNumberOfBytes, PULONG_PTR lpCompletionKey, LPOVERLAPPED* lpOverlapped, DWORD dwMilliseconds ); 1.通常做法 目前查了大部分网上的关于完成端口,是否连接断线,大多是通过*lpNumberOfBytes==0来判断

Windows完成端口 IOCP模型(一)

1 Windows完成端口基本介绍 2他是只能在Windows下的基于SOCKET事件管理的模型 3与select不同,select需要多次重置管理句柄,IOCP只要一次 4有事件后select需要操作获取数据,而IOCP通知你的时候说明数据操作好了 5select管理句柄的数目有限,IOCP没有限制 6IOCP支持多线程同时等待. 我的设计思路一个线程用来侦听accept事件, 一个线程来侦听SOCKET的IO事件, 大部分框架都是这样, 其实可以只使用一个线程做异步SOCKET就完全足够了,

Windows完成端口 IOCP模型(二)

1详解完成端口基本使用 1创建完成端口 HANDLE iocp = CreateIoCompletionPort(INVALID_HANDLE_VALUE,NULL,0,0); 参数其实就是-1,0,0,0. 最后一个参数代表的就是 NumberOfConcurrentThreads,就是允许应用同时执行的线程数量, 未来避免上下文切换,就是说让每个CPU只允许一个线程,设置为0 就是有多少处理器,就有多少工作线程. 原因就是如果一台机器有两个CPU(两核),如果让系统同时运行的 线程,多于本机

套接字I/O模型-完成端口IOCP

“完成端口”模型是迄今为止最为复杂的一种I/O模型.然而,假若一个应用程序同时需要管理为数众多的套接字,那么采用这种模型,往往可以达到最佳的系统性能!但不幸的是,该模型只适用于Windows NT和Windows 2000操作系统.因其设计的复杂性,只有在你的应用程序需要同时管理数百乃至上千个套接字的时候,而且希望随着系统内安装的CPU数量的增多,应用程序的性能也可以线性提升,才应考虑采用“完成端口”模型.要记住的一个基本准则是,假如要为Windows NT或Windows 2000开发高性能的

TCP同步与异步,长连接与短连接【转载】

原文地址:TCP同步与异步,长连接与短连接作者:1984346023 [转载说明:http://zjj1211.blog.51cto.com/1812544/373896   这是今天看到的一篇讲到TCP同步与异步,长连接与短连接编程的文章,内容不多,却把概念将的比较清晰.] 标签:TCP 线程 异步 模式 阻塞 首先我简单介绍一下同步TCP编程 与异步TCP编程. 在服务端我们通常用一个TcpListener来监听一个IP和端口.客户端来一个请求的连接,在服务端可以用同步的方式来接收,也可以用

【windows核心编程】IO完成端口(IOCP)复制文件小例

1.演示内容 文件复制 2.提要 复制大文件时,使用FILE_FLAG_NO_BUFFERING标志 同时需要注意: 读写文件的偏移地址为 磁盘扇区 的整数倍 读写文件的字节数为 磁盘扇区 的整数倍 读文件到的缓冲区在进程地址空间中的地址为 磁盘扇区 的整数倍 3.JUST CODING #include "stdafx.h" #include <Windows.h> #include <process.h> #include <iostream>

linux编程中接收主函数返回值以及错误码提示

程序A创建子进程,并调用进程B,根据不调用的不同情况,最后显示结果不同. #include <stdio.h> #include <unistd.h> #include <sys/wait.h> #include <sys/types.h> #include <errno.h> int main() { pid_t pid, rpid; int stat; if ((pid = fork()) < 0) { perror("for

【ActiveMQ入门-4】ActiveMQ学习-异步接收

总体说明: 1. 一个生产者/发布者:可以向多个目的地发送消息: 2. 每个目的地(destination)可以有多个订阅者或消费者: 如下图所示: 程序结构: 1. Publisher.java  :创建1个生产者和4个主题,遍历4个主题,生产者依次向4个主题中发送Message,共发送5次: 2.Consumer.java :消费者,创建8个消费者,每两个消费者订阅一个相同的主题,采用异步接收方式: 3. Listener.java   :异步监听 运行结果: 生产者: 消费者: 程序代码: