一.WinSock DLL
1.初始化WinSock DLL
int WSAStartup(
WORD wVersionRequested, //調用者能使用的Windows Socket支援的最高版本。高位指定副版本,低位指定主要版本號
LPWSADATA lpWSAData //指向WSADATA的指標,用於接收Windows Socket的實現細節
);
//該函數在一個進程中初始化WS2_32.dll的使用
2.釋放WinSock DLL資源
int WSACleanup(void);
二.通訊端
1.建立通訊端
SOCKET socket(
int af, //地址家族說明
int type, //新通訊端類型說明
int protocol //通訊端使用協議,特定於所表示的地址家族,0表示預設的協議
);
2.從容關閉通訊端
int shutdown(
SOCKET s, //通訊端描述符
int how //描述不在允許什麼類型操作的標誌
);
3.關閉通訊端
int closesocket(
SOCKET s
);
三.伺服器端
1.綁定
int bind(
SOCKET s, //一個未綁定通訊端的描述符;
const struct sockadd*name, //從SOCKADDR結構分配通訊端的地址
int namelen //name所包含的位元組長度,以位元組計
);
2.監聽
int listen(
SOCKET s, //表示一個已綁定但並未串連的通訊端
int backlog //待覺串連隊列的最大長度
);
listen函數將通訊端置入監聽狀態,等候進入的串連
3.接收
SOCKET accept(
SOCKET s, //一個用listen函數置入監聽狀態的通訊端描述符,accept函數返回的通訊端才是真正建立了串連
struct sockaddr*addr, //可選的指標,指向用於接收串連實體的緩衝區
int*addrlen //可選的指標,指向一個包含addr長度的整數
);
//accept函數允許一個通訊端上接受客戶串連
四.用戶端
1.建立串連
int connect(
SOCKET s, //標定一個未綁定通訊端的描述符
const struct sockaddr*name, //應與之建立串連的通訊端名稱
int namelen //名稱的長度
);
//connect函數建立一個到指定通訊端的連結
五.資料轉送
1.發送資料
int send(
SOCKET s, //標識一個已經建立串連通訊端的描述符
const char*buf, //包含待傳輸資料的緩衝區
int len, //buf中資料的長度
int flags //指定調用執行方式的指標
);
//send函數在一個已建立串連的通訊端上發送資料
2.發送資料到
int sendto(
SOCKET s, //表示一個可能已串連的標示符
const char*buf,
int len,
int flags,
const struct sockaddr*to, //可選的指標,指向目標通訊端的地址
int tolen
);
3.接收資料
int recv(
SOCKET s, //標識一個已建立串連通訊端的描述符
char*buf,
int len,
int flags
);
//resv函數接收從一個已串連或綁定的通訊端上擷取傳來的資料。
4.接收資料來自
int recvfrom(
SOCKET s,
char *buf, //接收傳來的資料的緩衝區
int len,
int flags,
struct sockaddr*from, //可選的指標,指向一個在返回時儲存源地址的緩衝區
int*fromlen
);
六.通訊端地址資訊
1.擷取對方的通訊端地址資訊
int getpeername(
SOCKET s,
struct sockaddr*name,
int*namelen
);
//getpeername函數擷取與一個通訊端相串連的電腦的名稱
2.擷取本地的通訊端地址資訊
int getsockname(
SOCKET s, //標識一個已串連的通訊端的描述符
struct sockaddr FAR* name, //用於擷取本地的通訊端socketaddr結構
int FAR* namlen // 指向名稱結構尺寸,以位元組計
);
//getsockname函數擷取本地socket名稱
七.其他
1.擷取最近的錯誤碼
int WSAGetLastError(void);