Chinaunix首页 | 论坛 | 博客
  • 博客访问: 44995
  • 博文数量: 8
  • 博客积分: 2000
  • 博客等级: 大尉
  • 技术积分: 310
  • 用 户 组: 普通用户
  • 注册时间: 2008-01-07 10:04
文章分类

全部博文(8)

文章存档

2011年(1)

2008年(7)

我的朋友
最近访客

分类: C/C++

2008-03-12 17:04:23

CAsyncSocket::Create

BOOL Create(
     UINT nSocketPort = 0,
     int nSocketType = SOCK_STREAM,
     long lEvent = FD_READ|FD_WRITE|FD_OOB|FD_ACCEPT|FD_CONNECT|FD_CLOSE,
     LPCTSTR lpszSocketAddress = NULL
    );
指定FR_READ导致Receive是一个异步操作,如果不能立即读到数据,则返回一个错误WSAEWOULDBLOCK。在数据到达之后,WinSock通知窗口m_hSocketWindow,导致OnReceive被调用。

指定FR_WRITE导致Send是一个异步操作,即使数据没有送出也返回一个错误WSAEWOULDBLOCK。在数据可以发送之后,WinSock通知窗口m_hSocketWindow,导致OnSend被调用。

指定FR_CONNECT导致Connect是一个异步操作,还没有连接上就返回错误信息WSAEWOULDBLOCK,在连接完成之后,WinSock通知窗口m_hSocketWindow,导致OnConnect被调用。

对于其他网络事件,就不一一解释了。

所以,使用CAsyncSocket时,如果使用Create缺省创建socket,则所有网络I/O都是异步操作,进行有关网络I/O时则必须覆盖以下的相关函数:

OnAccept、OnClose、OnConnect、OnOutOfBandData、OnReceive、OnSend。

阅读(953) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~