linux C語言網路程式設計學習總結《二》

2021-06-29 13:34:59 字數 977 閱讀 2109

3、建立連線

如果處理的是面向連線的網路服務(sock_stream或sock_seqpacket),在開始交換資料以前,需要在請求服務的程序套接字(客戶端)和提供服務的程序套接字(伺服器)之間建立乙個連線。用connect函式。

#include

int connect(int sockfd, const struct sockaddr *addr, socklen_t len);

返回值:成功返回0,出錯返回-1;

具體引數描述,不在作詳細解釋。

在connect中所指定的位址是想與之通訊的伺服器位址,如果sockfd沒有繫結得到乙個位址,connect會給呼叫者乙個預設位址。

4、listen:伺服器呼叫listen來宣告可以接收連線請求。

#include

int listen(int sockfd, int backlog);

返回值:成功返回0;出錯返回-1;

引數backlog提供了乙個提示,用於表示該程序所要入隊的連線請求數量。

其實際值由系統決定,但上限由中somaxconn指定。(對於tcp,其預設值為128).

一旦佇列滿了,系統會拒絕多餘的連線請求,所以backlog的值應該基於伺服器期望負載和接受連線請求與啟動服務的處理能力來選擇。

5、accept:獲得連線請求來建立連線。

#include

int accept(int sockfd,struct sockaddr *restrict addr,socklen_t *restrict len);

返回值:成功返回套接字描述符,出錯返回-1;

函式accept所返回的檔案描述符是套接字描述符,該毛舒服連線到connect的客戶端。這個顯得套接字描述符和原始套接字(sockfd)具有相同的套接字型別和位址族。

如果不關心客戶端標識,可以將引數addr和len設為null。

如果沒有連線請求等待處理,accept會阻塞直到乙個請求到來。

Linux C 網路程式設計學習資料

要想找乙份linux c 方面的好工作,在面試過程中游刃有餘,那麼這篇文章就是為你定製的。因為作為乙個校招的學生,我在學習和面試過程中的經歷總這個體系的文章,希望可以幫助到你。因為內容太多,本文先從學習資料入手。談到 linux c 網路程式設計,一時之間不知從何入手,那麼大問題不好解決,就拆解成小...

linux c程式設計 網路程式設計

在網路上,通訊服務都是採用 c s機制,也就是客戶端 伺服器端工作流程 使用socket 函式建立伺服器端通訊套介面 使用bind 函式將建立的套介面與伺服器位址繫結 使用listen 函式使伺服器套介面做好接收連線請求準備 使用accept 接收來自客戶端由connect 函式發出的連線請求 根據...

Linux C 網路程式設計教程

1 tcp 套接字通訊工作流程 一.面向連線的套接字socket通訊工作流程 為了實現伺服器與客戶機的通訊,伺服器和客戶機都必須建立套接字。伺服器與客戶機的工作原理可以用下面的過程來描述。1.伺服器先用 socket 函式來建立乙個套接字,用這個套接字完成通訊的監聽。2.用 bind 函式來繫結乙個...