一、TCP服務器調用順序:

調用socket函數創建套接字;聲明並初始化地址信息結構體變量;調用bind函數向套接字分配地址;調用listen函數進入等待連接請求狀態,只有調用了listen函數后客戶端才能調用connet函數,調用listen函數時,若請求隊列為空,listen函數不會返回。
#include <sys/socket.h>
// 成功返回0,失敗返回-1 int listen(int sock, int backlog); sock : 希望進入等待連接請求狀態的套接字文件描述符 backlog : 請求等待隊列的長度
調用listen函數以后,若有連接請求,則應調用accept函數按序受理。
#include <sys/socket.h>
// 成功返回創建的套接字文件描述符,失敗返回-1 int accept(int sock, struct sockaddr * addr, socklen_t * addrlen); sock : 服務器套接字的文件描述符 addr : 保存發起連接請求的客戶端地址信息的變量地址值 addrlen : 保存參數addr結構體的長度
二、TCP客戶端調用順序:

#include <sys/socket.h> int sonnect(int sock, struct sockaddr * aservaddr, socklen_t addrlen); sock : 客戶端套接字文件描述符 servaddr : 服務器端地址 addrlen : 服務器端地址長度
客戶端的IP地址和端口在調用connect函數的時候自動分配,無需調用標記的bind函數進行分配。
三、TCP服務器端和客戶端函數調用關系:

