同步:指發送方發出數據後,等收到接收方發回的響應,才發下一個數據包的通訊方式
異步:指的是發送方不等接收方響應,便接着發下個數據包的通訊方式;
阻塞:指調用某函數時,直到該函數完成操做,才返回;不然一直阻塞在該調用上
非阻塞:指調用某操做時,無論操做是否成功都當即返回,而不會掛在該操做服務器
提供基於事件的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