getsockopt()

getsockopt()

getsockopt()是獲取一個套接口選項。

基本介紹

  • 中文名:getsockopt()
  •   sockfd:一個標識套接口的描述字。
  • optname:需獲取的套接口選項。
簡述:,頭檔案,原型:,參數,返回值:,注釋:,

簡述:

獲取一個套接口選項。

頭檔案

sys/socket.h

原型:

int getsockopt(int sockfd, int level, int optname, void *optval, socklen_t *optlen);

參數

sockfd:一個標識套接口的描述字。
level:選項定義的層次。支持的層次僅有SOL_SOCKET和IPPROTO_TCP。
optname:需獲取的套接口選項。
optval:指針,指向存放所獲得選項值的緩衝區。
optlen:指針,指向optval緩衝區的長度值。

返回值:

若無錯誤發生,getsockopt()返回0。否則的話,返回-1錯誤,應用程式可通過WSAGetLastError()獲取相應錯誤代碼。
WSANOTINITIALISED:在使用此API之前應首先成功地調用WSAStartup()。
WSAENETDOWN:WINDOWS套接口實現檢測到網路子系統失效。
WSAEFAULT:optlen參數非法
WSAEINPROGRESS:一個阻塞的WINDOWS套接口調用正在運行中。
WSAENOPROTOOPT:未知或不支持選項。其中,SOCK_STREAM類型的套接口不支持SO_BROADCAST選項,SOCK_DGRAM類型的套接口不支持SO_ACCEPTCONN、SO_DONTLINGER 、SO_KEEPALIVE、SO_LINGER和SO_OOBINLINE選項。
WSAENOTSOCK:描述字不是一個套接口

注釋:

getsockopt()函式用於獲取任意類型、任意狀態套接口的選項當前值,並把結果存入optval。在不同協定層上存在選項,但往往是在最高的“套接口”層次上,設定選項影響套接口的操作,諸如操作的阻塞與否、包的選徑方式、帶外數據的傳送等。
被選中選項的值放在optval緩衝區中。optlen所指向的整形數在初始時包含緩衝區的長度,在調用返回時被置為實際值的長度。對SO_LINGER選項而言,相當於linger結構的大小,對其他選項來說,是一個整形數的大小。
如果未進行setsockopt()調用,則getsockopt()返回系統預設值。
getsockopt()支持下列選項。其中“類型”欄指出了optval所指向的值。僅有TCP_NODELAY選項使用了IPPROTO_TCP層;其餘選項均使用SOL_SOCKET層。
選項 類型 意義
SO_ACCEPTCONN BOOL 套接口正在用listen()監聽。
SO_BROADCAST BOOL 套接口設定為傳送廣播信息。
SO_DEBUG BOOL 允許調試。
SO_DONTLINER BOOL 若為真,則SO_LINGER選項被禁止。
SO_DONTROUTE BOOL 禁止選徑。
SO_ERROR int 獲取錯誤狀態並清除。
SO_KEEPALIVE BOOL 傳送“保持活動”信息。
SO_LINGER struct linger FAR* 返回當前各linger選項。
SO_OOBINLINE BOOL 在普通數據流中接收帶外數據
SO_RCVBUF int 接收緩衝區大小。
SO_REUSEADDR BOOL 套接口能和一個已在使用中的地址捆綁。
SO_SNDBUF int 傳送緩衝區大小。
SO_TYPE int 套接口類型(如SOCK_STREAM)。
TCP_NODELAY BOOL 禁止傳送合併的Nagle算法
getsockopt()不支持的BSD選項有:
選項名 類型 意義
SO_RCVLOWAT int 接收低級水印。
SO_RCVTIMEO int 接收逾時。
SO_SNDLOWAT int 傳送低級水印。
SO_SNDTIMEO int 傳送逾時。
IP_OPTIONS 獲取IP頭中選項。
TCP_MAXSEG int 獲取TCP最大段的長度。
用一個未被支持的選項去調用getsockopt()將會返回一個WSAENOPROTOOPT錯誤代碼(可用WSAGetLastError()獲取)。

相關詞條

熱門詞條

聯絡我們