你的位置:pcMing工作室 >> 资讯 >> 编程开发 >> C++编程 >> 详细内容 在线投稿

关于FD_READ事件

排行榜 收藏 打印 发给朋友 举报 来源: 互联网   发布者:未知
热度2429票  浏览490次 【共0条评论】【我要评论 时间:2010年4月08日 20:28

GX7\ wAcS-o0问:

Tp$a7vM2EHPR0

~@(L.\9uc$v/O0看《windows网络编程技术》把我看糊涂了,比如说,当服务器的FD_ACCEPT被调用时,  
2C C!Tp`{,O0  m_aClientSocket=   accept(m_hServerSocket,   (LPSOCKADDR)&m_sockClientAddr,   (LPINT)&nLength);他用这个方法接受了一个客户机的请求,并且获得了这个客户机的套接字,然后再用WSAAsyncSelect(m_aClientSocket,m_hWnd,WM_CLIENT_READCLOSE,FD_READ|FD_CLOSE);来设置监听事件,那么什么时候才能调用FD_READ这个事件呢,是在服务器向客户机用send函数的时候,还是说当  
c&`9CfL0  m_aClientSocket代表的那个客户机向服务器send的时候调用啊??????  pcMing工作室;Q4b;L!aY[oi\N
  小弟刚开始学网络编程,问题很可笑,还望各位大虾多指教

,C ^D?}|5a"rT0pcMing工作室7v1\a(V1B%G9dz fz

回答:pcMing工作室8ic7j2l$oV Q)niqf

pcMing工作室0h7a,`:_-ld6y

FD_READ有三种情况:  
9Ie nN)T,d,D0  1)有数据可以读入的时候就会产生FD_READ事件  
0WhG5cPxT [0  2)连接已经关闭、重设或中止就会产生FD_READ事件  pcMing工作室/RG+MM{{.QGFIR.r
  3)假如已经调用listen,而且一个连接正在建立,那么acept函数调用才会成功

'Pw9zoh4F0

(d?0O.g5g5K0O AM\0只要有客户机向服务器SEND就会触发FD_READ事件.一般来说,在FD_READ:下的第一件是先判断是哪一个客户也就是是哪一个套接字触发的该事件(如果有多个客户连接的话),再来在该套接字上处理收到包.pcMing工作室z2\)O W:x~#Eg

pcMing工作室6\ s_l'N)I

WSAAsyncSelect(...),根据其参数的不同,会根据其监听的事件产生相应的消息;  pcMing工作室9jPlp-Y(lU{;[
  例如:WSAAsyncSelect(m_aClientSocket,m_hWnd,WM_CLIENT_READCLOSE,FD_READ|FD_CLOSE),  
}J!w8EIUA0  当FD_READ,和FD_CLOSE事件产生时,会发送消息WM_CLIENT_READCLOSE到m_hWnd;  
p u*s(_d;e\0  详见MSDN;  pcMing工作室(Z:GF%k%Q5d:v!Wm

顶:130 踩:127
对本文中的事件或人物打分:
当前平均分:-0.24 (779次打分)
对本篇资讯内容的质量打分:
当前平均分:-0.25 (740次打分)
【已经有653人表态】
121票
感动
75票
路过
79票
高兴
66票
难过
74票
搞笑
69票
愤怒
89票
无聊
80票
同情
上一篇 下一篇
发表评论
换一张

网友评论仅供网友表达个人看法,并不表明本网同意其观点或证实其描述。

查看全部回复【已有0位网友发表了看法】

网络资源