同步:指发送方发出数据后,等收到接收方发回的响应,才发下一个数据包的通讯方式
异步:指的是发送方不等接收方响应,便接着发下个数据包的通讯方式;
阻塞:指调用某函数时,直到该函数完成操做,才返回;不然一直阻塞在该调用上
非阻塞:指调用某操做时,无论操做是否成功都当即返回,而不会挂在该操做服务器
提供基于事件的I/O异步模型网络
该方法用于建立一个Windows套接字,并将其附加在CAsyncSocket类对象上
BOOL Create(UINT nSocketPort=0,int nSocketType=SOCK_STREAM,long IEvent=FD_READ|FD_WRITE|FD_OOB|FD_ACCEPT|FD_CONNECT|FD_CLOSE,LPCTSTR lpszSocketAddress=NULL);
nSocketPort:套接字端口,若是为0,系统自动选择一个端口
nSocketType:套接字类型,若是为SOCK_STREAM=流式套接字,SOCK_DGRAM=数据报套接字
IEvent:套接字可以处理的网络事件
FD_READ:当套接字中有数据须要读取时触发事件
FD_WRITE:当向套接字写入数据时触发事件
FD_OOB:当接收到外带数据时触发事件
FD_ACCEPT:当接收链接请求时触发事件
FD_CONNECT:当链接完成时触发事件
FD_CLOSE:当套接字关闭时触发事件
lpszSocketAddress:套接字的IP地址app
该方法用于获取最后一次操做失败的状态信息
static int GetLastError();less
该方法用于获取套接字链接中的IP地址信息
BOOL GetPeerName(CString&rPeerAddress,UINT&rPeerPort);
BOOL GetPeerName(SOCKADDR*lpSockAddr,int*lpSockAddrLen);
rPeerAddress:用于接收函数返回的IP地址
rPeerPort:用于记录端口号
lpSockAddr:一个socketaddr结构指针,用于记录套接字名称
lpSockAddrLen:用于肯定lpSocketAddr的大小异步
该方法用于接受客户端的链接
virtual BOOL Accept(CAsyncSocket&rConnectedSocket,SOCKADDR*lpsockAddr=NULL,int*lpSockAddrLen=NULL);
rConnectedSocket:对应当前链接的套接字引用
lpSockAddr:一个sockaddr结构指针,用于记录套接字地址
lpSockAddrLen:用于肯定lpsockaddr的大小socket
该方法用于将IP地址和端口号绑定到套接字上
BOOL Bind(UINT nSocketPort,LPCTSTR lpszSocketAddress=NULL);
BOOL Bind(const SOCKADDR*lpSockAddr,int nSockAddrLen);
nSocketport:套接字端口
lpszSocketAddress:IP地址
lpSockADdr:一个sockaddr结构指针
nSockAddrLen:用于肯定lpsockAddr的大小函数
该方法用于发送一个链接请求
BOOL Connect(LPCTSTR lpszHostAddress,UINT nHostPort);
BOOL Connect(const SOCKADDR* lpSockAddr,int nSockAddrLen);
lpszHostAddress:主机的IP地址或网址
nHostPort:主机的端口
lpSockADdr:一个sockaddr结构指针
nSockAddrLen:用于肯定lpsockAddr的大小this
该方法用于关闭套接字
virtual void Close();spa
该方法用于将套接字置于监听模式
BOOL Listen(int nConnectionBacklog=5);
nConnectionBacklog:等待链接的最大队列长度.net
该方法用于在流式套接字中接受数据
virtual int Receive(void* lpBuf,int nBuflen,int nFlags=0);
lpBuf:接受数据的缓冲区
nBufLen:肯定缓冲区的长度
nFlags:肯定函数的调用模式,MSG_PEEK=表示查看传来的数据,数据被复制到接受缓冲区,但不会从输入队列中移走;MSG_OOB=处理带外数据.
该方法用于从数据包套接字中接受数据
int ReceiveFrom(void*lpBuf,int nBufLen,CString&rSocketAddress,UINT&rSocktPort,int nFlags=0);
int RecerveFrom(void *lpBuf,int nBufLen,SOCKADDR* lpSockAddr,int *lpSockAddrLen,int Flags=0);
lpBuf:接受数据的缓冲区
nBufLen:缓冲区的大小
rSocketAddress:用于接收数据报的目的地(IP地址)
rSocketPort:用于记录端口号
lpSockAddr:一个sockaddr结构指针,用于记录套接字地址信息
lpSockAddrLen:用于肯定lpSockAddr的大小
nFlags:函数的调用模式
该方法用于向流式套接字中发送数据
virtual Send(const void* lpBuf,int nBufLen,int nFlags=0);
lpBuf:要发送数据的缓冲区
nBufLen:缓冲区大小
nFlags:函数调用方法
该方法用于在流式套接字或数据包套接字上发送数据
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结构指针
nSockAddrLen:lpsockAddr的大小
nFlags:函数调用方式
该方法用于在套接字上断开数据的发送或接受
BOOL ShutDown(int nHow=sends);
nHow:用于肯定函数的行为,0表示不容许接收,1表示不容许发送,2表示不容许接收和发送
当套接字接收链接请求时触发该事件
virtual void OnAccept(int nErrorCode);
nErrorCode:错误代码
当套接字关闭时触发该事件
virtual void OnClose(int nErrorCode);
当套接字链接后触发该事件
virtual OnConnect(int nErrorCode);
当套接字有数据被接收时触发该事件
virtual OnReiceive(int nErrorCode);
当套接字发送数据时触发该事件
virtual Onsend(int nErrorCode);
CSocket类派生于CAsyncSocket类,该类对套接字函数进行更高层次封装,并提供了同步技术。
该方法用于建立一个Windows套接字,并将其附加在CSocket类对象上
BOOL Create(UINT nSocketPort=0,int nSocketType=SOCK_STREAM ,LPCTSTR lpszSocketAddress=NULL);
nSocketPort:套接字端口,若是为0,系统自动选择一个端口
nSocketType:套接字类型,若是为SOCK_STREAM=流式套接字,SOCK_DGRAM=数据报套接字
lpszSocketAddress:套接字IP地址
该方法用于讲一个套接字句柄附加到CSocket类对象
BOOL Atach(SOCKET hSocket);
hSocket:套接字句柄
该方法根据套接字句柄得到CSocket对象指针
static CSocket* PASCAL FromHandle(SOCKET hSocket);
hSocket:套接字句柄
返回值:CSocket对象指针
该方法用于判断套接字是否处于阻塞模式
BOOL lsBlocking();
返回值:0=非阻塞,非0=则塞
该方法用于取消套接字的阻塞模式
void CancelBlockingCall();
[cpp] view plain copy
[cpp] view plain copy
[cpp] view plain copy
[cpp] view plain copy
[cpp] view plain copy
[cpp] view plain copy
[cpp] view plain copy
[cpp] view plain copy
[cpp] view plain copy
[cpp] view plain copy
[cpp] view plain copy
[cpp] view plain copy
[cpp] view plain copy
[cpp] view plain copy
[cpp] view plain copy
[cpp] view plain copy
[cpp] view plain copy
[cpp] view plain copy
[cpp] view plain copy
[cpp] view plain copy