关于FD_READ事件

mo01 2002-11-28 11:14:25
看《windows网络编程技术》把我看糊涂了,比如说,当服务器的FD_ACCEPT被调用时,
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函数的时候,还是说当
m_aClientSocket代表的那个客户机向服务器send的时候调用啊??????
小弟刚开始学网络编程,问题很可笑,还望各位大虾多指教
...全文
324 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
mo01 2002-11-28
  • 打赏
  • 举报
回复
这个我知道,你的wParam参数就是这个套接字,我刚才说的关于FD_WRITE的问题
哪位高手帮忙解释一下,在线等...
fengge008 2002-11-28
  • 打赏
  • 举报
回复
to zoutaiqi(水乡船哥) 你说:在FD_READ:下的第一件是先判断是哪一个客户也就是是哪一个套接字触发的该事件(如果有多个客户连接的话)。那么怎样判断是哪个客户发来的数据??
mo01 2002-11-28
  • 打赏
  • 举报
回复
谢谢楼上的各位兄台,顺便再问一下,比如说,WSAAsyncSelect(m_aClientSocket,m_hWnd,WM_WRITE,FD_WRITE)的作用是不是在服务器向m_aClientSocket代表的客户机调用send()函数时发出这个WM_WRITE消息???
archoo 2002-11-28
  • 打赏
  • 举报
回复
你的理解对的,但不全面;
WSAAsyncSelect(...),根据其参数的不同,会根据其监听的事件产生相应的消息;
例如:WSAAsyncSelect(m_aClientSocket,m_hWnd,WM_CLIENT_READCLOSE,FD_READ|FD_CLOSE),
当FD_READ,和FD_CLOSE事件产生时,会发送消息WM_CLIENT_READCLOSE到m_hWnd;
详见MSDN;
mo01 2002-11-28
  • 打赏
  • 举报
回复
哦,小弟明白了一些,这么说来WSAAsyncSelect(m_aClientSocket,m_hWnd,WM_CLIENT_READCLOSE,FD_READ|FD_CLOSE);的作用是为了监听
m_aClientSocket所代表的客户机向服务器写数据的消息了,我理解的对吗???
小弟在线等待...
zoutaiqi 2002-11-28
  • 打赏
  • 举报
回复
只要有客户机向服务器SEND就会触发FD_READ事件.一般来说,在FD_READ:下的第一件是先判断是哪一个客户也就是是哪一个套接字触发的该事件(如果有多个客户连接的话),再来在该套接字上处理收到包.
yanhuahui 2002-11-28
  • 打赏
  • 举报
回复
FD_READ有三种情况:
1)有数据可以读入的时候就会产生FD_READ事件
2)连接已经关闭、重设或中止就会产生FD_READ事件
3)假如已经调用listen,而且一个连接正在建立,那么acept函数调用才会成功
Sander 2002-11-28
  • 打赏
  • 举报
回复
m_aClientSocket代表的那个客户机向服务器send的时候调用啊!
mo01 2002-11-28
  • 打赏
  • 举报
回复
ok,小弟明白了,谢谢各位了
archoo 2002-11-28
  • 打赏
  • 举报
回复
to mo01(工大笨笨) :
严格上说,应该是在服务器已经做好了向m_aClientSocket代表的客户机发送数据的准备,这时会产生一个FD_WRITE,然后发出WM_WRITE;

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧