accept函式詳解

2021-08-31 01:35:18 字數 912 閱讀 1987

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!

既然服務端已經很虔誠了,很真誠了,處於傾聽狀態,那麼該是去嘗試接受客戶端請求的時候了,別只顧著傾聽,不去接納別人。接納客戶端請求的函式是accept, 我們先來看看函式的原型:

winsock_api_linkagesocketwsaapiaccept

(    socket s,    struct sockaddr far * addr,    int far * addrlen    )

;

函式的第乙個引數用來標識服務端套接字(也就是listen函式中設定為監聽狀態的套接字),第二個引數是用來儲存客戶端套接字對應的「地方」(包括客戶端ip和埠資訊等), 第三個引數是「地方」的占地大小。返回值對應客戶端套接字標識。

實際上是這樣的: accept函式指定服務端去接受客戶端的連線,接收後,返回了客戶端套接字的標識,且獲得了客戶端套接字的「地方」(包括客戶端ip和埠資訊等)。

accept函式非常地痴情,痴心不改:如果沒有客戶端套接字去請求,它便會在那裡一直痴痴地等下去,直到永遠(注意, 此處討論的是阻塞式的socket.  如果是非阻塞式的socket, 那麼accept函式就沒那麼痴情了, 而是會立即返回, 並意猶未盡地對未來的客戶端扔下一句話: 我等了你, 你不來, 那就算了, 我懶得鳥你)。

可是,我不想等了,我要睡覺了。睡覺之前,最後來看看accpt函式的用法:

unsigned int sockconn = accept(socksrv,(sockaddr*)&addrclient, &len);

給我老師的人工智慧教程打call!

TCP IP程式設計之accept函式詳解

accept函式由tcp伺服器呼叫,用於從已完成連線佇列返回下乙個已完成連線。如果已完成連線隊列為空,那麼程序被投入睡眠 假定套接字默為預設的阻塞方式 函式原型 accept 2 linux programmer s manual accept 2 name accept,accept4 accep...

socket通訊 accept函式

先給出乙個典型的tcp ip通訊示意圖。問題一 socket結構體物件究竟是怎樣定義的?我們知道,在使用socket程式設計之前,需要呼叫socket函式建立乙個socket物件,該函式返回該socket物件的描述符。函式原型 intsocket intdomain,inttype,intproto...

accept函式筆記

includeint accept int sockfd,struct sockaddr cliaddr,socklen t addrlen accept函式有tcp服務呼叫,用於從已完成連線佇列頭返回下乙個已完成連線。如果已完成連線隊列為空,那麼程序被投入睡眠 假定套接字為預設的阻塞方式 返回 若...