1. 程式人生 > >《MFC網絡編程》學習日記1

《MFC網絡編程》學習日記1

c/c++ MFC socket

1、創建套接字——socket()
功能:使用前創建一個新的套接字
格式: SOCKET PASCAL FAR socket(int af,int type,int procotol);
參數: af: 通信發生的區域
type: 要建立的套接字類型
procotol: 使用的特定協議
2、指定本地地址——bind()
功能:將套接字地址與所創建的套接字號聯系起來。
格式: int PASCAL FAR bind(SOCKET s,const struct sockaddr FAR name,int
namelen);
參數: s: 是由socket()調用返回的並且未作連接的套接字描述符(套接字號) 。
其它:沒有錯誤, bind()返回0,否則SOCKET_ERROR
地址結構說明:
struct sockaddr_in
{
short sin_family;//AF_INET
u_short sin_port;//16位端口號,網絡字節順序
struct in_addr sin_addr;//32位IP地址,網絡字節順序
char sin_zero[8];//保留
}
3、建立套接字連接——connect()和accept()
功能:共同完成連接工作
格式: int PASCAL FAR connect(SOCKET s,const struct sockaddr FAR
name,int
namelen);
SOCKET PASCAL FAR accept(SOCKET s,struct sockaddr FAR name,int FAR

addrlen);

4、監聽連接——listen()
功能:用於面向連接服務器,表明它願意接收連接。
格式: int PASCAL FAR listen(SOCKET s, int backlog);

5、數據傳輸——send()與recv()
功能:數據的發送與接收
格式: intPASCAL FARsend(SOCKETs,const charFAR buf,int len,int flags);
int PASCAL FAR recv(SOCKET s,const char FAR
buf,int len,int flags);
參數: buf:指向存有傳輸數據的緩沖區的指針。
6、多路復用——select()

功能:用來檢測一個或多個套接字狀態。
格式: int PASCAL FAR select(int nfds,fd_set FAR readfds,fd_set FAR
writefds,
fd_set FAR exceptfds,const struct timeval FAR timeout);
參數: readfds:指向要做讀檢測的指針
writefds:指向要做寫檢測的指針
exceptfds:指向要檢測是否出錯的指針
timeout:最大等待時間
7、關閉套接字——closesocket()
功能:關閉套接字s
格式: BOOL PASCAL FAR closesocket(SOCKET s) ;

2.2 無連接協議的套接字調用時序圖

《MFC網絡編程》學習日記1