unix網路程式設計常用函式詳解

2021-06-06 19:07:50 字數 1781 閱讀 2331

基本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...