介绍一个异步通信的socket类

王朝vc·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

async_socket类和MFC的CAsyncSocket相似,但不同的是它不使用应用程序的消息队列,而使用重载操作,因此它可以用在控制台应用程序中。

使用这个类时要重载一些虚函数。如下:

//远程服务器关闭连接

//err - WinSock error code

virtual void on_close(int err);

//接受新连接请求

//err - WinSock error code

virtual void on_accept(int err);

//socket准备接受数据

//err - WinSock error code

virtual void on_read(int err);

//socket准备发送数据

//err - WinSock error code

virtual void on_write(int err);

//socket被创建,监听线程开始

//err - WinSock error code

virtual void on_attach();

//重载读操作完成

//err - Win32 error code

virtual void on_read_complete(DWORD err, DWORD len);

//重载写操作完成

//err - Win32 error code

virtual void on_write_complete(DWORD err, DWORD len);

//监听线程销毁

virtual void on_clear();

virtual void on_timeout();

按下面的步骤可建立连接:

1 建立async_socket类。

2 on_attach 函数是创建socket时最先调用的函数。在这个函数里可以用bool read(char* pBuff, DWORD len) 和 bool write(char* pBuff, DWORD len)实现读写操作。

3 on_read_complete函数可以实现接收数据。

4 on_write_complete函数可以实现传输数据。

5 监听socket要用on_accept,它会调用accept通知接受当前等待的连接请求。

6 也可以用select(from on_attach)和相应的标志获得通知。

很重要的一点是在多任务程序中,监听线程要调用所有提到的函数。

例子中包括用async_socket类实现的http服务器,和一些其他的辅助类。

http://www.codeguru.com/code/legacy/network/async_socket.zip

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航