unix網路編程常用函數詳解

來源:互聯網
上載者:User

基本TCP客戶-伺服器程式的套介面函數如:

1、socket函數

原型:#include<sys/socket.h>

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<sys/socket.h>

int connect(int sockfd, const struct sockaddr *servaddr, socklen_t addrlen);傳回值:0---成功,-1----出錯;

作用:用戶端用connect 函數建立一個與TCP伺服器的串連;

參數:sockfd,套介面描述字;

             servaddr,套介面地址結構的指標,該地址結構需要包含伺服器IP地址和連接埠號碼;

             addrlen, 套介面地址結構的大小;

關於connect出錯返回的幾種情況:

  •  如果TCP用戶端沒有收到SYN分節的響應,則返回ETIMEDOUT。
  • 如果對客戶的SYN的響應是RST,則表明該伺服器主機在我們指定的連接埠上沒有進程在等待與之串連,這稱之為硬錯,用戶端接到RST,立即返回錯誤ECONNREFUSED;
  • 如果某用戶端發出的SYN在中間的路由器上引發了一個目的地不可達的ICMP錯誤,這稱之為軟錯,用戶端按時間間隔繼續發送SYN,在規定時間仍未收到響應,則返回EHOSTUNREACH;
3、bind函數原型:#include<sys/socket.h>int bind(int sockfd, const struct sockaddr *myaddr, socklen_t addrlen);傳回值:0---成功,-1----出錯;作用:給套介面分配一個本地協議地址;參數:sockfd,套介面描述字;    myaddr,特定於協議的地址結構的指標,對於TCP,可以指定一個IP地址,一個連接埠號碼;           addrlen,第二個參數地址結構的長度;4、listen函數原型:#include<sys/socket.h>int listen(int sockfd, int backlog);  傳回值:0---成功,-1---出錯;作用 : 將未串連的套介面轉換成被動套介面,指示核心應接受此套介面的串連請求;第二個參數規定了次套介面排隊的最大串連數;參數:sockfd,套介面描述字;            backlog,套介面排隊的最大串連數;對與第二個參數backlog的理解:
  • 未完成串連隊列,為每個已由用戶端發出併到達伺服器,伺服器正在等待完成相應TCP三路握手過程的SYN分節開設一個條目,這些套介面都處於SYN_RCVD;
  • 已完成隊列:為每個已完成TCP三路握手過程的客戶開設一個條目,這些套介面都處於ESTABLISHED狀態;
關係如:5、accept函數原型:#include<sys/socket.h>int accept(int sockfd, struct sockaddr *cliaddr, socklen_t *addrlen);傳回值:非負描述符---成功,-1----出錯;作用:有伺服器調用,從已完成串連隊列頭返回下一個已完成串連,若已完成串連隊列為空白,則進程睡眠。參數:sockfd,套介面描述字;    cliaddr,客戶進程協議地址;   addrlen,第二個參數,客戶進程協議地址的長度;6、close函數原型:#include<unistd.h>int close(int sockfd);作用:將套介面坐上“已關閉”標記,並立即返回到進程;

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.