範文齋

位置:首頁 > 校園範文 > 其他

accept什麼意思-accept函數怎麼用

其他2.65W

導語:苦澀難懂的accept在編程上是什麼函數?本文爲本站爲網友解釋其意思,歡迎瀏覽

accept什麼意思-accept函數怎麼用

accept什麼意思_accept函數怎麼用

accept意思(編程函數)

accept():在一個套接口接受一個連接。函數定義: #include int accept(int sockfd, void *addr, int *addrlen); sockfd 相當簡單,是和 listen() 中一樣的套接字描述符。addr 是個指向局部的數據結構 sockaddr_in 的指針。這是要求接入的信息所要去的地方(你可以測定那個地址在那個端口呼叫你)。在它的地址傳遞給 accept 之前,addrlen 是個局部的整形變量,設置爲 sizeof(struct sockaddr_in)。accept 將不會將多餘的字節給 addr。如果你放入的少些,那麼它會通過改變 addrlen 的值反映出來。同樣,在錯誤時返回-1,並設置全局錯誤變量 errno。

accept用法

表達式簡介/accept()編輯

在一個套接口接受一個連接。accept()是c語言中網絡編程的重要的函數,windows系統在#include,而linux系統在#include中。

文件包含

#include

原型

SOCKETPASCALFARaccept(SOCKETs,structsockaddrFAR*addr,intFAR*addrlen);

參數

s:套接口描述字,該套接口在listen()後監聽連接。

addr:(可選)指針,指向一緩衝區,其中接收爲通訊層所知的連接實體的地址。Addr參數的實際格式由套接口創建時所產生的地址族確定。

addrlen:(可選)指針,輸入參數,配合addr一起使用,指向存有addr地址長度的整型數。

返回值

成功返回一個新的套接字描述符,失敗返回-1。

註釋/accept()編輯

本函數從s的等待連接隊列中抽取第一個連接,創建一個與s同類的新的套接口並返回句柄。如果隊列中無等待連接,且套接口爲非阻塞方式,則accept()阻塞調用進程直至新的'連接出現。如果套接口爲非阻塞方式且隊列中等待連接,則accept()返回一錯誤代碼。已接受連接的套接口不能用於接受新的連接,原套接口仍保持開放。

addr參數爲一個返回參數,其中填寫的是爲通訊層所知的連接實體地址。addr參數的實際格式由通訊時產生的地址族確定。addrlen參數也是一個返回參數,在調用時初始化爲addr所指的地址空間;在調用結束時它包含了實際返回的地址的長度(用字節數表示)。該函數與SOCK_STREAM類型的面向連接的套接口一起使用。如果addr與addrlen中有一個爲零NULL,將不返回所接受的套接口遠程地址的任何信息。

返回值/accept()編輯

如果沒有錯誤產生,則accept()返回一個描述所接受包的SOCKET類型的值。否則的話,返回INVALID_SOCKET錯誤,應用程序可通過調用WSAGetLastError()來獲得特定的錯誤代碼。

addrlen所指的整形數初始時包含addr所指地址空間的大小,在返回時它包含實際返回地址的字節長度。

錯誤代碼/accept()編輯

WSANOTINITIALISED:在使用此API之前應首先成功地調用WSAStartup()。

WSAENETDOWN:WINDOWS套接口實現檢測到網絡子系統失效。

WSAEFAULT:addrlen參數太小(小於socket結構的大小)。

WSAEINTR:通過一個WSACancelBlockingCall()來取消一個(阻塞的)調用。

WSAEINPROGRESS:一個阻塞的WINDOWS套接口調用正在運行中。

WSAEINVAL:在accept()前未激活listen()。

WSAEMFILE:調用accept()時隊列爲空,無可用的描述字。

WSAENOBUFS:無可用緩衝區空間。

WSAENOTSOCK:描述字不是一個套接口。

WSAEOPNOTSUPP:該套接口類型不支持面向連接服務。

WSAEWOULDBLOCK:該套接口爲非阻塞方式且無連接可供接受。

參見:

bind(), connect(), listen(), select(), socket(), WSAAsyncSelect().

標籤:accept 函數