编程词典
明日图书
明日软件
用户注册
用户登录
站内
  当前位置:编程词典服务网 >> 编程词典社区论坛 >> CAsyncSocket类
  · CAsyncSocket类

用户:  大麦
发帖:  430 篇
作品:  0 个
回复:  108 篇
技术分:  1156 分
等级:  
注册:  2010-05-11 09:09:40



发表于:2010-07-13 15:22:57
          楼主

CAsyncSocket类
CAsyncSocket类对套接字函数进行了简单封装,它提供了基于事件的I/O异步模型,使得用户可以方便地处理接收和发送等事件。但是,用户需要自己处理网络的字节顺序问题、不同字符集间的转换问题等。CAsyncSocket类的主要方法、事件如下:
(1)Create方法
该方法用于创建一个Windows套接字,并将其附加到CAsyncSocket类对象上。
语法:
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)
参数说明:
 nSocketPort:表示套接字端口,如果为0,系统将自动选择一个端口。
 nSocketType:表示套接字的类型,如果为SOCK_STREAM,表示流式套接字,为SOCK_DGRAM,表示数据包套接字。
 lEvent:表示套接字能够处理的网络事件,其值可以是表1描述的任意值的组合。
表1                        套接字网络事件

描述

FD_READ

当套接字中有数据需要读取时触发事件

FD_WRITE

当向套接字写入数据时触发事件

FD_OOB

当接收到外带数据时触发事件

FD_ACCEPT

当接收到连接请求时触发事件

FD_CONNECT

当连接完成时触发事件

FD_CLOSE

当套接字关闭时触发事件


lpszSocketAddress:表示套接字的IP地址。
(2)GetLastError方法
该方法用于获取最后一次操作失败的状态信息。
语法:
static int GetLastError( );
 提示:我们在进行网络操作时,如果某一项操作失败,想要了解错误原因,可以调用GetLastError方法获取错误代码。
(3)GetPeerName方法
该方法用于获取套接字连接的IP地址信息。
语法:
BOOL GetPeerName( CString& rPeerAddress, UINT& rPeerPort );
BOOL GetPeerName( SOCKADDR* lpSockAddr, int* lpSockAddrLen );
参数说明:
 rPeerAddress:用于接收函数返回的IP地址。
 rPeerPort:用于记录端口号。
 lpSockAddr:是一个sockaddr结构指针,用于记录套接字名称。
 lpSockAddrLen:用于确定lpSockAddr的大小。
(4)Accept方法
该方法用于接受客户端的连接。
语法:
virtual BOOL Accept( CAsyncSocket& rConnectedSocket, SOCKADDR* lpSockAddr = NULL, int* lpSockAddrLen = NULL );
参数说明:
 rConnectedSocket:表示对应当前连接的套接字引用。
 lpSockAddr:表示一个sockaddr结构指针,用于记录套接字地址。
 lpSockAddrLen:确定lpSockAddr的大小。
(5)Bind方法
该方法用于将IP地址和端口号绑定到套接字上。
语法:
BOOL Bind( UINT nSocketPort, LPCTSTR lpszSocketAddress = NULL );
BOOL Bind ( const SOCKADDR* lpSockAddr, int nSockAddrLen );
参数说明:
 nSocketPort:表示套接字端口。
 lpszSocketAddress:表示IP地址。
 lpSockAddr:表示一个sockaddr结构指针,该结构记录了套接字的地址信息。
 nSockAddrLen:确定lpSockAddr的大小。
(6)Connect方法
该方法用于发送一个连接请求。
语法:
BOOL Connect( LPCTSTR lpszHostAddress, UINT nHostPort );
BOOL Connect( const SOCKADDR* lpSockAddr, int nSockAddrLen );
参数说明:
 lpszHostAddress:表示主机的IP地址或网址。
 nHostPort:表示主机的端口。
 lpSockAddr:是一个sockaddr结构指针,该结构标识套接字地址信息。
 nSockAddrLen:确定lpSockAddr的大小。
(7)Close方法
该方法用于关闭套接字。
语法:
virtual void Close( );
(8)Listen方法
该方法用于将套接字置于监听模式。
语法:
BOOL Listen( int nConnectionBacklog = 5 );
参数说明:
nConnectionBacklog:表示等待连接的最大队列长度。
(9)Receive方法
该方法用于在流式套接字中接收数据。
语法:
virtual int Receive( void* lpBuf, int nBufLen, int nFlags = 0 );
参数说明:
 lpBuf:表示接收数据的缓冲区。
 nBufLen:确定缓冲区的长度。
 nFlags:确定函数的调用模式,为MSG_PEEK,表示用来查看传来的数据,在序列前端的数据会被复制一份到返回缓冲区中,但是这个数据不会从序列中移走。为MSG_OOB,表示处理外带数据。
(10)ReceiveFrom方法
该方法用于从数据包套接字中接收数据。
语法:
int ReceiveFrom( void* lpBuf, int nBufLen, CString& rSocketAddress, UINT& rSocketPort, int nFlags = 0 );
int ReceiveFrom( void* lpBuf, int nBufLen, SOCKADDR* lpSockAddr, int* lpSockAddrLen, int nFlags = 0 );
参数说明:
 lpBuf:表示接收数据的缓冲区。
 nBufLen:表示缓冲区的大小。
 rSocketAddress:用于接收数据报的目的地(IP地址)。
 rSocketPort:用于记录端口号。
 lpSockAddr:是一个sockaddr结构指针,用于记录套接字地址信息。
 lpSockAddrLen:确定lpSockAddr的大小。
 nFlags:确定函数的调用模式,为MSG_PEEK,表示用来查看传来的数据,在序列前端的数据会被复制一份到返回缓冲区中,但是这个数据不会从序列中移走。为MSG_OOB,表示处理外带数据。
(11)Send方法
该方法用于向流式套接字中发送数据。
语法:
virtual int Send( const void* lpBuf, int nBufLen, int nFlags = 0 );
参数说明:
 lpBuf:表示要发送数据的缓冲区。
 nBufLen:确定缓冲区的大小。
 nFlags:表示函数调用方法。
(12)SendTo方法
该方法用于在流式套接字或数据包套接字上发送数据。
语法:
int SendTo( const void* lpBuf, int nBufLen, UINT nHostPort, LPCTSTR lpszHostAddress=NULL, int nFlags = 0 );
int SendTo( const void* lpBuf, int nBufLen, const SOCKADDR* lpSockAddr, int nSockAddrLen, int nFlags = 0 );
参数说明:
 lpBuf:表示要发送数据的缓冲区。
 nBufLen:表示缓冲区大小。
 nHostPort:表示主机端口号。
 lpszHostAddress:表示主机地址。
 lpSockAddr:表示一个sockaddr结构指针,用于确定主机套接字地址信息。
 lpSockAddrLen:确定lpSockAddr的大小。
 nFlags:表示函数调用方式。
(13)ShutDown方法
该方法用于在套接字上断开数据的发送或接收。
语法:
BOOL ShutDown( int nHow = sends );
参数说明:
nHow:确定ShutDown函数的行为,0表示不允许接收,1表示不允许发送,2表示不允许接受和发送。
(14)OnAccept事件
当套接字接受连接请求时触发该事件。
语法:
virtual void OnAccept( int nErrorCode );
参数说明:
nErrorCode:表示错误代码。
(15)OnClose事件
当套接字关闭时触发该事件。
语法:
virtual void OnClose( int nErrorCode );
参数说明:
nErrorCode:表示错误代码。
(16)OnConnect事件
当套接字连接之后触发该事件。
语法:
virtual void OnConnect( int nErrorCode);
参数说明:
nErrorCode:表示错误代码。
(17)OnReceive事件
当套接字上有数据被接收时触发该事件。
语法:
virtual void OnReceive( int nErrorCode );
参数说明:
nErrorCode:表示错误代码。
(18)OnSend事件
当套接字发送数据时触发该事件。
语法:
virtual void OnSend( int nErrorCode);
参数说明:
nErrorCode:表示错误代码。

 

本帖赏分:0 分   回复数:0 篇     
修改   删除   引用   回复
该帖暂无回复!
吉林省明日科技有限公司提供技术支持. 
Copyright © 1999-2008 吉林省明日科技有限公司. 吉ICP备10002740
当前时区 GMT+8, 今天是 
刷新页面 - 关于我们 - 设为首页