AcceptEx与WSAEventSelect和Accept [问题点数:20分,结帖人VisualEleven]

Bbs1
本版专家分:0
结帖率 100%
Bbs1
本版专家分:28
WSAEventSelect服务器+客户端
使用WSAEventSelect模型,构建一个 TCP 服务器,该服务器能: 接受客户端连接时显示客户端的 IP,PORT信息 ;接收客户端连接时显示其连接编号,客户端退出时显示关闭的连接编号 ; 能
WSAEventSelect模型
WSAEventSelect模型      WSAEventSelect模型也是I/O模型中较为常用的一个异步模型,它也允许应用程序在一个或多个套接字上,接收以事件为基础的网络事件通知。该模型最主要是将网络事件投递至一个事件对象句柄。    事件通知    事件通知模型要求我们的应用程序针对打算使用的每一个套接字,首先创建一个事件对象。创建方法是调用WSACreateEv
WSAEventSelect模型客户端代码示例
WSAEventSelect模型客户端代码示例
wsaEventSelect事件选择模型
wsaEventSelect实现p2p的文件传输
AcceptEx函数特点及需要提防的地方,看完了解更深入了,所以转过来
接受连接请求 服务器要做的最普通的事情之一就是接受来自客户端的连接请求。在套接字上使用重叠I/O接受连接的惟一API就是AcceptEx()函数。有趣的是,通常的同步接受函数<em>accept</em>()的返回值是一个新的套接字,而AcceptEx()函数则需要另外一个套接字作为它的参数之一。这是因为AcceptEx()是一个重叠操作,所以你需要事先创建一个套接字(但不要绑定或连接它),并把这个套接字通过
IOCP之AcceptEx的问题(1)
最近在使用编写IOCP模型时,Server端使用的是AcceptEx异步而Client端是用的Socket函数,但是在测试中遇到这种情况:CLient并发连接到Server,每次都是连接数16356个(有时达不到这个数量)就连接不上了Client端connect返回SOCKET_ERROR,WSAGetlastError返回10055(没有可用缓冲区空间。因为系统缺乏足够缓冲区空间或由于队列已满,...
完成端口与AcceptEx
关于IOCP网上到处都是资料,说的也很详细。我在这里就不再多说了,这只是本人在学习IOCP时的笔记,和配合AcceptEx写的一个极小的服务端程序。由于刚刚接触ICOP加上本人刚毕业不到一年,所以里面的理解或观点可能有误,还请大家多多批评!          VC6.0开发,旨在体现IOCP的架构,忽略细节,服务程序的功能只是接收客户连接,接着接收到客户数据,然后原封不动的返回给客户!  
IOCP结合AcceptEx实例
IOCP结合AcceptEx实例
windows完成端口 等待客户端发送一次消息才能完成AcceptEx操作的解决方法
程序捕捉不到<em>accept</em>这个事件,但是可以接受连接; 连接接受以后,可以捕捉到接收数据事件,也可以捕捉到连接关闭事件。 但为什么最初的接受客户端连接的事件就不能捕捉呢? 问题的根源在于服务端必须等到客户端send一次数据,AcceptEx的操作才能完成。那怎么办有处理方法吗,当然有。 (PASCAL FAR * LPFN_ACCEPTEX)(     __in SOCKET sLis
WSAEventSelect用法
WSAEventSelect模型WSAEventSelect模型也是I/O模型中较为常用的一个异步模型,它也允许应用程序在一个或多个套接字上,接收以事件为基础的网络事件通知。该模型最主要是将网络事件投递至一个事件对象句柄。   事件通知   事件通知模型要求我们的应用程序针对打算使用的每一个套接字,首先创建一个事件对象。创建方法是调用WSACreateEvent函数,它的定义如下: WSAEVENT WSACreateEvent(void);   函数的返回值
Windows socket之WSAEventSelect模型
WSAEventSelect模型        WSAEventSelect模型是Windows socekts提供的另一个有用异步IO模型。该模型允许在一个或多个套接字上接收以事件为基础的网络事件通知。Windows sockets应用程序可以通过调用WSAEventSelect函数,将一个事件与网络事件集合关联起来。当网络事件发生时,应用程序以事件的形式接收网络事件通知。
通过WSAEVENT事件替代socket多线程
socket编程的时候,为了监控不同的socket,可能用到多线程的方式实现,但是在数据量不是特别大的时候,可以用WSAEVENT(handle)代替多线程  比如有sockArray数组,可以通过WSAEVENT   wsEvent  = WSACreateEvent() 产生和eventArray和sockArray对应,然后通过WSAEventSelect 绑定socke和event
WsaEventSelect封装的类,多线程
最近工作上需要一个小的tcp服务器,就想到了用WsaEventSelect去管理socket, 遂在网上找了下资料,有个多线程的Wsaeventselect的C源码,就想将其封装为类,用了两天(好吧,水平有限)。其中有个问题,是客户端如果closesocket太快的话,服务端这边会收不到FD_CLOSE消息,在客户端closesocket前加了个sleep就正常了,查了资料貌似是和tcp关闭时候的
WSAEventSelect多线程服务器实现示例
从CSDN的一个xd那里看到这个代码,觉得对WSAEventSelect模型的多线程实现做的非常好,代码行文风格和代码质量都是非常不错。我做了些小的改动学习之用。如果你也感兴趣不妨一起留言讨论讨论。
使用AcceptEx方法的完成端口
#include #include #include #include //微软扩展的类库 using namespace std; #define SEND 0 #define RECV 1 #define ACCEPT 2 #define DATA_LENGTH 1000 //单句柄数据定义 typedef struct _PER_HANDLE_DATA
c++ socket 通信,关于accept函数未阻塞,错误10022---
<em>accept</em>函数突然不阻塞了,导致代码无限循环。 排查<em>accept</em>函数问题,发现是10022错误,参数无效,中间折腾过程就不说了,原因是bind函数问题。 c++ 头文件&amp;lt;thread.h&amp;gt;中也存在一个bind函数,添加了using namespace std;后,bind默认调用这个,导致绑定失败。 ::bind()这样写就没问题了。  ...
WSAAccept()函数使用解析
首先了解<em>accept</em>、AcceptEx、WSAAccept的区别 . 1. <em>accept</em>、WSAAccept是同步操作,AcceptEx是异步操作 2. WSAAccept函数早<em>accept</em>函数基础上添加了条件函数判断是否接受客户端连接 3. AcceptEx是异步的,可以同时发出多个AcceptEx请求,支持重叠IO操作.  WSAAccept()函数: 简述: 有条件地接受一
请教accept和AcceptEx的区别
下面是我的理解,望各位大侠指正:rnrn1.当侦听Socket侦听到有多个客户端请求连接时,会把连接请求放在一个队列里面,然后使用<em>accept</em>从队列中获取连接,<em>accept</em>是阻塞控制,如果队列里没有请求连接的客户Socket,那么<em>accept</em>阻塞,如果存在可连接的Socket,<em>accept</em>每次从队列中获取一个,并产生一个连接。rn2.如果使用AcceptEx,则需投递AcceptEx I/O,并且可以投递多个,也可以把它们看作放在一个队列里面,如果有客户连接请求,则有I/O事件产生,从而实现多个连接的并发执行。
accept 和 AcceptEx 的问题?
AcceptEx带来了两个问题,第一,在工作线程中需要加一个分支,处理完成的<em>accept</em>的逻辑。第二,AcceptEx会顺便接受一些数据。rnrn但是我没有处理DOS攻击的需求,所以只想开一个线程,不停的<em>accept</em>新连接,然后做投递WSARecv操作。问题是,<em>accept</em>返回的套接字好像不支持I/O重叠操作,WSAGetLastError() 返回10045。rnrn我的问题是,如果让<em>accept</em>返回的套接字,支持WSA_FLAG_OVERLAPPED???
WSAEventSelect与accept触发的问题??
初始化socket;rn 位置1.s<em>accept</em> =<em>accept</em>(sockList[eventIndex],NULL,NULL);rnint rc = WSAEventSelect(sock, eventList,FD_READ|FD_WRITE|FD_ACCEPT|FD_CLOSE|FD_CONNECT);rn 位置2.s<em>accept</em> =<em>accept</em>(sockList[eventIndex],NULL,NULL);rn为什么放在位置1时程序就阻塞在那了,放在位置2时就不阻塞了(没有客户端连接),就是给sock注册消息的问题,谁能具体讲一下WSAEventSelect是怎么回事 不就是给他sock注册事件吗,我认识位置2页也应该阻塞在那,即使给他注册事件了,因为没有客户端连接啊。请同志们解释解释。。。。。。
Windows IO模型-WSAEventSelect模型(异步阻塞模型)
事件选择(WSAEventSelect)模型:基于事件通知,事件是一个有操作系统管理的内核对象,当前系统基于事件机制,该模型则可以使用,事件两种状态,有信号和无信号,检测事件,若有信号则进行相应处理。 参考博客:http://www.cnblogs.com/venow/archive/2012/06/12/2543065.html  缺点:(1)不能同时处理多个Socket,有数量限制。要么W
详解WSAEventSelect网络模型
详细讲解了事件选择模型的流程与相关的API,解决了相关疑难问题,并附有实现的代码
【网络编程】之九、事件选择WSAEventSelect
WSAEventSelect模型是类似于WSAAsyncSelect模型的另一个有用的异步I/O模型。它允许应用程序在一个或者多个套接字上接收以事件为基础的网络事件。 在这里,最主要的差别是在于网络事件会投递到一个事件对象句柄。并不是投递到一个窗口。 我们使用事件模型前,我们的应用程序针对使用的每一个套接字首先要创建一个事件对象: [cpp] view plainc
IOCP中为什么使用WSAIoctl获取AcceptEx函数指针
Winsock2的其他供应商不一定会实现AcceptEx函数。同样情况也包括的其他Microsoft的特定APIs如TransmitFile,GetAcceptExSockAddrs以及其他Microsoft将在以后版本的windows里。     在运行WinNT和Win2000的系统上,这些APIs在Microsoft提供的DLL(mswsock.dll)里实现,可以通过链接mswsock.
WSAEventSelectI/O模型中FD_WRITE事件的处理以及如何发送数据
网上很多人都在问什么时候才会触发FD_WRITE,触发了我该怎么发送数据,如果没有触发,我又该如何发数据? 当第一次连接成功的时候会触发FD_WRITE,还有就是当send 返回SOCKER_ERROR并且 WSAGetLastError()返回 WSAEWOULDBLOCK 这时表示缓冲区已满,当数据发送出去,又有空闲的缓冲区时会触发FD_WRITE,表示缓冲区可写。 也就是说只有缓
WSAEventSelect模型编程 详解
WSAEventSelect模型编程      WSAEventSelect模型编程 这个模型是一个简单的异步事件模型,使用起来比较方便,现在说一下其的具体的用法和需要注意的地方。 一,模型的例程(服务端): 先举一个王艳平网络通信上的例子: ////////////////////////////////////////////////// // WSAEventSel
WSAEventSelect(事件选择)模型
http://joychou.org/index.php/Misc/WSAEventSelect.html 首先需要用WSACreateEvent创建一个事件对象,其初始化状态为状态为“未受信” 并且人工重置。 函数原型 WSAEVENT WSACreateEvent(void); 然后利用WSAEventSelect绑定“监听”套接字到刚创建的事件对象中,
Windows Sockets网络编程(3)WSAEventSelect模型开发
WSAEventSelect模型是非阻塞的,该模型允许在一个或者多个套接字上接收以事件为基础的网络事件通知。Windows Sockets应用程序在创建套接字后,调用WSAEventSelect()函数,将一个事件对象与网络事件集合关联在一起。当网络事件发生时,应用程序以事件的形式接收网络事件通知。 创建TCP 这里不再赘述了,能来到本文的,相信基本功已经不用多讲了。实在不明白的可以阅读《Windows Sockets网络编程(0)TCP In Action》一文,该文详细的叙述了TCP创建的整个过
WSAEventSelect模型服务端与测试程序
本来想不要积分的,但是没得办法,这里最低选择2分
采用C++语言实现的WSAEventSelect I/O模型
采用C++语言编写,在VS2010下开发,可以直接运行,代码中有相关的注释。
基于WSAEventSelect的多线程服务器C++程序
基于WSAEventSelect模型,,使用线程池技术,可以处理大量的客户I/O请求,程序定义SOCKET_BOJ THREAD_OBJ两个结构,通过链表记录对象。
基于WSAEventSelect模型的服务器设计
它使用了线程池,可以处理大量的客户I/O请求。设计总体思路比较简单,程序的主线程负责监听客户端的连接请求,接受到新连接后,将新套接字安排给工作线程处理I/O.每个工作线程最多处理64个套接字,如果再有新的套接字,就在创建新的工作线程。
WSAEventSelect客户端
练习套接字编程,写的使用WSAEventClient I/O模式的 客户端,MFC 单文档,多线程。 WSAEventSelect更适合服务器,写成客户端用来练习。 VC++ 6.0 编译。
一个基于线程池的WSAEventSelect模型服务器设计
//WSAEventSelect.h #include "CInitSocket.h" typedef struct _SOCKET_OBJ { SOCKET sock; //套接字句柄 HANDLE hEvent; //与次套接字相关的事件对象句柄 sockaddr_in addrRemote; //客户端地址信息 _SOCKET_OBJ *pNext; //指向
Socket_TCP _监听失败——10022
在实现tcp通信的多线程中,出现了一个问题,监听函数会报错: //绑定地址到服务器 int ret=bind(listenSer, (SOCKADDR*)&amp;amp;saddr, slen); if (ret== SOCKET_ERROR) { cout &amp;lt;&amp;lt; &quot;绑定地址失败&quot; &amp;lt;&amp;lt; endl; cout &amp;lt;&amp;lt; &quot;5s后退出控制台!&quot; &amp;l...
WSAEventSelect 线程池 实现服务器示例
用WSAEventSelect结合线程池实现的服务器示例.希望能够帮助到那些热爱网络,但又迷失方向的朋友.
异步套接字编程之WSAEventSelect
WSAEventSelect模型: █ 事件选择(WSAEventSelect)模型是另一个有用的异步I/O 模型。和 WSAAsyncSelect 模型类似的是, 它也允许应用程序在一个或多个套接字上,接收以事件为基础的网络事件通知,最主要的差别在于网络事件会投 递至一个事件对象句柄,而非投递到一个窗口例程。   █ 事件通知模型要求我们的应用程序针对使用的每一个套
网络编程(52)—— Windows下使用WSAEventSelect实现异步通知IO
一、同步IO和异步IO         同步IO是指发生IO事件的时间点和相关函数返回的时间点一致。如使用send函数发送数据时,所有的数据发送到输出缓冲区后,send函数才会返回,这种IO方式就是同步IO。异步IO指函数先于IO事件返回。还是以send函数为例,调用send函数后其马上返回,而数据传送到输出缓冲区交给操作系统完成。这种IO方式就是同步IO。         什么是异步IO通知
windows下多路复用IO(select,WSAAsyncSelect,WSAEventSelect)
windows下多路复用IO(select,WSAAsyncSelect,WSAEventSelect)
【笔记】IOCP投递WSARecv失败10014的解决方法
WSARecv使用的时候可能会失败,如果WSAGetLastError是10014,可能是WSARecv的参数错误: WINSOCK_API_LINKAGE int WSAAPI WSARecv( _In_ SOCKET s, _In_reads_(dwBufferCount) __out_data_source(NETWORK) LPWSABUF lpBuffers, _In_ DWORD
多线程下的WSAEventSelect模型
http://blog.csdn.net/wangjieest/article/details/7042108 http://blog.csdn.net/ithzhang/article/details/8476556
WSAEventselect模型中各网络事件触发机制
转自:http://blog.csdn.net/teleinfor/article/details/5933203 1.         FD_READ事件 l  调用WSAEventSelect函数时,如果当前有数据可读 l  有数据到达时,并且没有发送过FD_READ事件 l  调用recv/recvfrom函数后,仍然有数据可读时 2.         RD_WRITE事件 l
网络拦截器--winsock钩子
xp,2k3,win7 测试均正常工作 winsock钩子 拦截的函数 socket ,bind ,listen ,<em>accept</em> ,AcceptEx ,WSAAccept ,connect ,send ,WSASend ,recv ,WSARecv ,WSARecvEx ,closesocket
WSAAccept accept AcceptEx 三者有何区别?
如题?
大家的IOCP的 accept 都是 AcceptEx 么?
TCP/IOCP/WindowsrnConsole 程序。rnrn我使用 WSAAccept() 发现一个问题,有时候,即使是刚开启服务器,然后client连过来,都有阻塞的情况发生。必须Ctrl+C 才可以把服务器唤醒。rnrnvoid MainThread()rnrn for( ;; )rn rn WSAAccept()rn rnrnrnvoid QueryIOCPStateThread()rnrn for( ;; )rn rn rnrnrn这个,确定是 WSAAccept 的问题么?rnrn(我个人是有点怀疑,有经验的朋友帮忙说说。谢谢)
基于WSAEventSelect模型的TCP服务器实现
 怎么感觉标题很学术的样子。。。上次那个重叠IO的事件模型搞完之后,就觉得TCP是很不错的协议,可以将重点转移到对客户端的管理之上,而不必为了数据报的丢失和客户端keepalive的问题而绞尽脑汁(之前我做了个简单的聊天软件,面对的就是这种问题)。  WSAEventSelect是基于事件通知的,我觉得没有比这个模型更加简单实用了,编译环境:vc++ 6.0,代码如下: #include
重叠I/O网络编程使用AcceptEx时容易忽略的一个问题
使用AcceptEx接受到请求的SOCKET,执行SO_UPDATE_ACCEPT_CONTEXT时,TCP_NODELAY等属性会被继承为与Listener相同的值。 因此如果需要设置TCP_NODELAY等属性,应当: 1、设置Listener的该属性; 或 2、在完成SO_UPDATE_ACCEPT_CONTEXT后设置属性。
微信端访问网站反应慢,出现指定的网络名不再可用。 :AH00341: winnt_accept: Asynchronous AcceptEx failed
做了ecshop微信开发,挂上去后,从微信端跳入商城反应很慢,多点几次甚至没反应了,从手机浏览器进入就没这种情况,查找了很久都没找到原因,最后在apache的error.log中看到 [mpm_winnt:warn] [pid 3232:tid 360] (OS 64)指定的网络名不再可用。  : AH00341: winnt_<em>accept</em>: Asynchronous AcceptEx fail
WSAEventSelect模型 用法介绍
WSAEventSelect模型 用法介绍
(三)Socket I/O模型之事件选择(WSAEventSelect)
转自:点击打开链接 WSAEventSelect和WSAAsyncSelect模型类似,它也允许应用程序在一个或多个套接字上,接收以事件为基础的网络事件通知。对于WSAAsyncSelect模型采用的网络事件来说,它们均可原封不动地移植到事件选择模型上。在用事件选择模型开发的应用程序中,也能接收和处理所有那些事件。该模型最主要的差别在于网络事件会投递至一个事件对象句柄,而非投递至一个窗口
WSAEventSelect模型例子(使用线程池)
以下来自《Windows 网络与通信程序设计(第2版)》3.4.3 1. WinDef.h中的声明: #ifndef NULL #ifdef __cplusplus#define NULL    0 #else#define NULL    ((void *)0) #endif #endif 2. WinNT.h
最简单的WSAEventSelect模型(注意注释的地方)
// Win32SocketTest.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include "winsock2.h" //#pragma comment(lib,"wsock32.lib") #pragma comment(lib,"Ws2_32.lib")
IOCP在WSARecv出现10054错误以后,ACCEPT假死的问题
之前一直用AcceptEx投递<em>accept</em>消息,但是经过大量测试发现,在WSARecv出现错误以后,在进行大量的连接,服务器就没有任何反应,经过检查,并没有发现死链接。改用单独的线程,使用普通的<em>accept</em>以后,问题得到解决!
windows下使用WSAEVENTSELECT实现同步发送异步接收
windows下使用WSAEVENTSELECT实现同步发送异步接收
TCP流式套接字的事件对象I/O管理WSAEventSelect编程
WSAEventSelect()函数和WSAAsyncSelect()函数类似,它们的区别在于当一个FD_XXX网络事件发生时,WSAEventSelect()函数将导致一个应用程序指定的事件对象将被设置,即将网络事件投递到一个事件对象句柄,而不是将网络事件(消息)投递至一个窗口句柄。WSAEventSelect()函数原型如下:int WSAEventSelect(    S
WSAEventSelect模型基于TCP协议的控制台网络通信程序
//服务端源码 #include //这里是winsock2,不是winsock #include #include #define PORT 5566 #define MSGSIZE 1024 #pragma comment(lib, "ws2_32.lib") int g_iTotalConn=0; SOCKET g_CliSocketArr[MAXIMUM_WAIT_OBJECT
套接字I/O模型之WSAEventSelect
一种新的套接字I/O模型------WSAEventSelect,他与WSAAsyncSelect一样也是一种异步事件通知模型,不同的是WSAAsyncSelect是与窗口句柄关联在一起的,必须要要窗口才行,而WSAEventSelect是与事件对象关联的。这个模型的基本思路是为感兴趣的一组网络事件创建一个事件对象,再调用WSAEventSelect函数将网络事件和事件对象关联起来。当网络事件发生
PortMapEvent 端口映射 VC源码
WSAEventSelect模型的端口映射。 另外一种WSAEventSelect模型的端口映射。
TCP学习完成端口
TCP Server(AcceptEx) Client Windows工程
WSAEventselect模型中的一些注意事项(尤其是event和事件的关联与重置;FD_WRITE事件的作用)
1. 需要包含winsock2.h,链接ws2_32.llib   2. 把#include 放到最前面 至于原因,那是因为windows.h这个头文件已经包含了winsock.h,winsock.h和winsock2.h貌似有冲突  解释在:http://vc.ygman.com/thread/47071   3.MSDN中说使用WSAEventSelect模型等待时是不占cpu时间的
FD_CONNECT 为什么没触发?
先WSAEventSelect,再Connect。 注意Connect 有可能失败,比如:服务端没开启。
Winsock I/O 模型详解
Winsock共有五种类型的套接字I/O模型,可让Winsock应用程序对I/O进行管理,它们包括: select(选择)、WSAAsyncSelect(异步选择)、WSAEventSelect(事件选择)、overlapped(重叠)、以及completion port(完成端口)。 1、Select(选择)模型 利用select函数,判断套接字上是否存在数据,或者能否向一个套接字写入数
WSAEventSelect多线程服务器
由于王艳平老师的代码用纯C实现 全局函数太多 阅读难以理解 本人使用C++重写 思路清晰注释到位 特点: 1 使用多线程 目的是监控连接数量和线程数目 2 界面基于对话框 使用WSAAsyncSelect和WSAEventSelect两个模型 这是因为使用了界面 前者对消息开放 后者完成网络服务 3 有文档 有测试程序 4 代码只有200多行 比书上少了100行 容易阅读多了 三个类SockectOjb ThreadOjb ThreadPool ">由于王艳平老师的代码用纯C实现 全局函数太多 阅读难以理解 本人使用C++重写 思路清晰注释到位 特点: 1 使用多线程 目的是监控连接数量和线程数目 2 界面基于对话框 使用WSAAsyncSelect和WSAEventSelect两个模型 这 [更多]
WSAEventSelect ?
为什么我写的这段代码只能接受两次客户端的连接啊。在往后就接收不到连接。WSAWaitForMultipleEvents()就永远返回TIMEOUT了。rn[code=C/C++]WSAEVENT <em>accept</em>Event = WSACreateEvent(); //事件对象句柄rn SOCKET* server = serSocket->getSocket();//事件对象注册在的socketrn if(server == NULL)rn rncout<<<<<Stop();rn return -1;rn [/code]
WSAEventSelect
是对WSAEventSelect模型的基本实现,可以研究学习下该模型的基本运行原理
学习Socket多线异步套接字WSAEVENTSELECT总结
WSAEVENTSOCKET多线程异步套接字I/O模型,比基于窗口消息的WSAASYNCSELECT异步套接字可以处理大量的客户连接、且不需要窗口。唯一的缺陷就是每个线程最多有64个事件的限制。   进入正题,回忆巩固所学: 首先定义数据结构;   // 套节字对象 typedef struct _SOCKET_OBJ { SOCKET s; // 套节字句柄 HANDLE
wsaeventselect
这是我的一段代码rnrnrnrn WSAEventSelect(m_sSock,m_hEvent,FD_READ|FD_CLOSE);rnrn while(true)rn rn dwRet = WSAWaitForMultipleEvents(1,&m_hEvent,FALSE,10000,FALSE);rnrn if(dwRet != WSA_WAIT_EVENT_0) continue;rnrn rc = WSAEnumNetworkEvents(m_sSock,m_hEvent,&events);rn if(rc == SOCKET_ERROR ) continue;rnrn if(events.lNetworkEvents & FD_READ)rn rn //WSAEventSelect(m_sSock,m_hEvent,0);rn if(recv(...) == SOCKET_ERROR)rn rn if(WSAGetLastError() != WSAEWOULDBLOCK) break;rn rn .rn // save data that will be sended to a bufferrn .rn if(have data to send) WSAEventSelect(m_sSock,m_hEvent,FD_WRITE|FD_CLOSE);rn else WSAEventSelect(m_sSock,m_hEvent,FD_READ|FD_CLOSE);rn rn if(events.lNetworkEvents & FD_WRITE)rn rn //WSAEventSelect(m_sSock,m_hEvent,0);rnrn // send data from the bufferrn if(send(...) == SOCKET_ERROR)rn rn if(WSAGetLastError() != WSAEWOULDBLOCK) break;rn rn rn if(no more data to send) WSAEventSelect(m_sSock,m_hEvent,FD_READ|FD_CLOSE);rn else WSAEventSelect(m_sSock,m_hEvent,FD_WRITE|FD_CLOSE);rn rn if(events.lNetworkEvents & FD_CLOSE)rn rn rn rn rnrnrn现象是:rn 第一次:收到FD_READ通知,读数据,WSAEventSelect(m_sSock,m_hEvent,FD_WRITE|FD_CLOSE);收到FD_WRITE通知;rn 第二次:收到FD_READ通知,读数据,WSAEventSelect(m_sSock,m_hEvent,FD_WRITE|FD_CLOSE);但再也收不到FD_WRITE通知。rnrnrn请指点迷津。
WSAEventSelect()
该函数怎么使用?客户/服务器模式中,怎么触发网络事件的。请指教
WSAAccept accept AcceptEx 这三个函数有什么优劣呢?
如题,WSAAccept <em>accept</em> AcceptEx 这三个函数有什么优劣呢?rnrn分数不多,因为我的分数不过二十!希望那位能给我一个完整的详细解说。谢谢
Winsock 套接字非阻塞模式小例程 WinSock IO模型
服务器端使用非阻塞套接字,允许有多个客户接入。客户端使用阻塞套接字。服务器端循环轮询方式。 /***设套接字为非阻塞模式***/ unsigned long ul = 1; int nRet=ioctlsocket(sock_server, FIONBIO, &amp;amp;ul); //设置套接字非阻塞模式 if (nRet == SOCKET_ERROR) { cout &amp;lt;&amp;lt...
IOCP 系列函数讲解
CreateIoCompletionPort详解 GetQueuedCompletionStatus PostQueuedCompletionStatus WSASocket Socket与WSASocket的区别 WSAEventSelect WSARecvCreateIoCompletionPort()详解函数原型:HANDLE WINAPI CreateIoCompletionPort(
Winsock WSAEventSelect(单线程) 服务端模型源码
Winsock WSAEventSelect 服务端模型源码
AcceptEx问题
AcceptEx是异步调用,第二参数必须先创建一个socke1传进去。而<em>accept</em>则是阻塞返回一个客户端connect过来的socket2。问题是socket2是不是系统内核创建的?rnAcceptEx 创建了socket1传进内核后,内核使用(connect)功能时不也是接收一个socket?rnrn
Winsock WSAEventSelect(多线程) 服务端模型源码
Winsock WSAEventSelect 服务端模型源码
AcceptEx的问题
rn我用AcceptEx发送一个接受客户端连接的请求,当它接收到一个连接后,怎么样让它继续接收客户端连接rnrn它第二个参数的那个套接字要重创建吗?
关于apache 在2003中的运行错误
今天把服务器重启了一下,结果网站过了三四个小时就不能访问了,去看了错误日志 事件类型: 错误 事件来源: Apache Service 事件种类: 无 事件 ID: 3299 日期:  2007-7-14 事件:  8:37:38 用户:  N/A 计算机: JJLOU 描述: The Apache service named  reported the following error: &amp;gt;...
socket 多路复用
socket <em>accept</em> 多路复用,socket <em>accept</em> 多路复用,socket <em>accept</em> 多路复用
IOCP多次投递
iocp 的话 可以同时进行多次投递 这是没有问题的。 你可以同时投递读和写。 写的话  可以同时投递多个,而且 他会按照你投递的顺序进行发 送 理论上说iocp 如果同时多次投递send 如果某次没有send 完整的话 那就会出现乱序的。但是我在自己的代码里没遇到过,所以你自己考虑一 下。 你可以可以在自己的socket 对象上面加一个发送队列,只进行一次send 投递,在发送成功以后,从队
Winsock模型之WSAEventSelect(事件通知)
Winsock模型之WSAEventSelect(事件通知)
使用WSAIoctl获取socket扩展函数(如AcceptEx)的指针
未获取函数指针就调用函数(如直接连接mswsock.lib并直接调用AcceptEx)的消耗是很大的,因为AcceptEx 实际上是存在于Winsock2结构体系之外的。每次应用程序常试在服务提供层上(mswsock之上)调用AcceptEx时,都要先通过WSAIoctl获取该函数指针。如果要避免这个很影响性能的操作,应用程序最好是直接从服务提供层通过WSAIoctl先获取这些APIs的指针。
I/O模型(异步事件)
异步事件    WSAEventSelect模型是WindowsSockets提供的另外一个有用的异步I/O模型。该模型允许一个或多个套接字上接收以事件为基础的网络事件通知。Windows Sockets应用程序在创建套接字后,调用WSAEventSlect()函数,将一个事件对象与网络事件集合关联在一起。当网络事件发生时,应用程序以事件的形式接收网络事件通知。和 WSAAsyncSelect ...
AcceptEx() 的使用。
谁有 AcceptEx 的使用例子?
VC++实现网络五指棋源码(客户端和服务器)
VC++基于SOCKET编程,采用WSAEventSelect模型实现!
WSAEventSelect服务器端
练习WSAEventSelect写的一个简易的服务器端,MFC主界面线程与套接字线程。服务器地址192.168.0.101 端口4567 由VC6编译通过。
求助WSAEventSelect
#include"D:/WSacode/commonHeader/SockInitClass.h"rn#includernrn#ifndef UNICODErn#define UNICODErn#endifrnrnSockInitClass SockInit;rnrnusing namespace std;rnrnint WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,PSTR pszCmdLine,int nShowCmd)rn//int main()rnrn WSAEVENT eventArray[WSA_MAXIMUM_WAIT_EVENTS];rn SOCKET sockArray[WSA_MAXIMUM_WAIT_EVENTS];rnrn int nEventTotal=0;rn SOCKET sListen=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);rn sockaddr_in sin;rn int Port=5150;rn sin.sin_family=AF_INET;rn sin.sin_port=htons(Port);rn sin.sin_addr.s_addr=INADDR_ANY;rnrn if(bind(sListen,(SOCKADDR*)&sin,sizeof(sin))==SOCKET_ERROR)rn rn //cout<<<<
2015.6.5 qt学习笔记 accept()概念
本篇,会重点讲述模式对话框,以及exec()的用法,<em>accept</em>()和<em>accept</em>ed的概念。 一.非模式对话框 非模式对话框是和同一个程序中其它窗口操作无关的对话框。在字处理软件中查找和替换对话框通常是非模式的来允许同时与应用程序主窗口和对话框进行交互。调用show()来显示非模式对话框。show()立即返回,这样调用代码中的控制流将会继续。在实践中你将会经常调用show
accept的文件类型
通过<em>accept</em>可以限定打开文件选择对话框后,默认能选择的文件类型 *.3gpp audio/3gpp, video/3gpp 3GPP Audio/Video *.ac3 audio/ac3 AC3 Audio *.asf allpication/vnd.ms-asf Advanced Streaming Format *.au audio/basic AU Au
Ngwsx-0.8.29
Ngwsx - nginx for windows 特性: IOCP AcceptEx ConnectEx TransmitFile TransmitPackets Windows Service ......
GX3001+GX1121+ZL10037-V1机顶盒原理图下载
GX3001+GX1121+ZL10037-V1机顶盒原理图pdf 相关下载链接:[url=//download.csdn.net/download/njzy919/2192660?utm_source=bbsseo]//download.csdn.net/download/njzy919/2192660?utm_source=bbsseo[/url]
fpga的经典论文处理器体系结构下载
FPGA的经典论文,是关于处理器体系结构的 相关下载链接:[url=//download.csdn.net/download/ft11101985/2321149?utm_source=bbsseo]//download.csdn.net/download/ft11101985/2321149?utm_source=bbsseo[/url]
数据结构教程 第三版 清华大学出版社下载
清华大学数据结构教程第三版的课件及源代码。代码都是可以直接用来运行的。很不错。 相关下载链接:[url=//download.csdn.net/download/lovechina1025/2369994?utm_source=bbsseo]//download.csdn.net/download/lovechina1025/2369994?utm_source=bbsseo[/url]
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 怎么学习互联网大数据 村干部学习大数据心得
我们是很有底线的