基本tcp客戶-伺服器程式的套介面函式如下圖:
1、socket函式
原型:#include
int socket(int family, int type, int protocol); 返回值:非負描述符--成功, -1--出錯;
作用:指定期望的通訊協議介面(tcp或udp或unix域位元組協議等)
family 指明協議簇族解釋
af_inet
ipv4協議
af_inet6
ipv6協議
af_local
unix與協議
af_route
路由套介面
af_key
金鑰套介面
type型別
型別解釋
sock_stream
位元組流套介面
sock_dgram
資料報套介面
sock_raw
原始套介面
2、connect函式
原型:#include
int connect(int sockfd, const struct sockaddr *servaddr, socklen_t addrlen);返回值:0---成功,-1----出錯;
作用:客戶端用connect 函式建立乙個與tcp伺服器的連線;
引數:sockfd,套介面描述字;
servaddr,套介面位址結構的指標,該位址結構需要包含伺服器ip位址和埠號;
addrlen, 套介面位址結構的大小;
關於connect出錯返回的幾種情況:
3、bind函式
原型:#include
int bind(int sockfd, const struct sockaddr *myaddr, socklen_t addrlen);
返回值:0---成功,-1----出錯;
引數:sockfd,套介面描述字;
myaddr,特定於協議的位址結構的指標,對於tcp,可以指定乙個ip位址,乙個埠號;
addrlen,第二個引數位址結構的長度;
4、listen函式
原型:#include
int listen(int sockfd, int backlog);
返回值:0---成功,-1---出錯;
作用 : 將未連線的套介面轉換成被動套介面,指示核心應接受此套介面的連線請求;第二個引數規定了次套介面排隊的最大連線數;
引數:sockfd,套介面描述字;
backlog,套介面排隊的最大連線數;
對與第二個引數backlog的理解:
關係如下圖:
5、accept函式
原型:#include
int accept(int sockfd, struct sockaddr *cliaddr, socklen_t *addrlen);
返回值:非負描述符---成功,-1----出錯;
引數:sockfd,套介面描述字;
cliaddr,客戶程序協議位址;
addrlen,第二個引數,客戶程序協議位址的長度;
6、close函式
原型:#include
int close(int sockfd);
作用:將套介面坐上「已關閉」標記,並立即返回到程序;
UNIX網路程式設計 fork exec函式
exec 資料型別 說明標頭檔案 pid t 一般為int,見這裡 fork 包括各種變體 是unix中派生新程序的唯一方法。父程序呼叫fork之前開啟的所有描述符 fd 在fork之後由子程序共享。網路伺服器利用了這個特性 父程序呼叫accept後呼叫fork,所接受的已連線套接字隨後就在父程序與...
Linux 網路程式設計常用函式詳解
sendto 經socket傳送資料 相關函式 send sendmsg,recv recvfrom socket 表頭檔案 include sys types.h include sys socket.h 定義函式 int sendto int s const void msg,int len,u...
UNIX網路程式設計
在unix network programming 的 3.7 inet pton and inet ntop functions 中提到中有如下兩個巨集定義 define inet addrstrlen 16 for ipv4 dotted decimal define inet6 addrstr...