getsockopt() - Unix、Linux系統呼叫 - 技術教學
Tutorials Point


  Unix入門
  Unix Shell程式設計
  高階Unix
  Unix有用參考
  Unix有用資源
  精選閱讀

版權所有 © 2014 tutorialspoint



  首頁     參考資料     討論論壇     關於TP  

getsockopt() - Unix、Linux系統呼叫


previous next AddThis Social Bookmark Button

廣告

名稱

getsockopt, setsockopt - 獲取和設定套接字選項

概要

#include <sys/types.h>
#include <sys/socket.h>

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

int setsockopt(int s, int level, int optname, const void *optval, socklen_t optlen);

描述

getsockopt() 和 setsockopt() 操作與套接字關聯的選項。選項可能存在於多個協議層;它們始終存在於最頂層的socket層。

操作套接字選項時,必須指定選項所在的層級和選項的名稱。要操作套接字層級的選項,level 指定為SOL_SOCKET。要操作任何其他層級的選項,則提供控制該選項的相應協議的協議號。例如,要指示選項應由TCP協議解釋,level應設定為TCP的協議號;參見getprotoent(3)。

引數optvaloptlen用於訪問setsockopt()的選項值。對於getsockopt(),它們標識一個緩衝區,其中將返回請求的選項值。對於getsockopt(),optlen是一個值-結果引數,最初包含optval指向的緩衝區的大小,並在返回時修改以指示返回的值的實際大小。如果不需要提供或返回選項值,optval可以為NULL。

Optname和任何指定的選項都將未經解釋地傳遞給相應的協議模組進行解釋。包含檔案<sys/socket.h>包含套接字層選項的定義,如下所述。其他協議層級的選項格式和名稱各不相同;請查閱手冊第4節中的相應條目。

大多數套接字層選項都使用int引數作為optval。對於setsockopt(),引數應為非零值以啟用布林選項,如果要停用選項,則為零。

有關可用套接字選項的說明,請參見socket(7)和相應的協議手冊頁。

返回值

成功時,返回零。出錯時,返回 -1,並且errno被相應地設定。

錯誤

標籤描述
EBADF 引數s不是有效的描述符。
EFAULT optval指向的地址不在程序地址空間的有效部分。對於getsockopt(),如果optlen不在程序地址空間的有效部分,也可能返回此錯誤。
EINVAL setsockopt() 中的optlen無效。
ENOPROTOOPT
 在指示的級別上未知該選項。
ENOTSOCK 引數s是檔案,而不是套接字。

符合標準

SVr4, 4.4BSD (這些系統呼叫首次出現在 4.2BSD 中),
POSIX.1-2001。

注意

getsockoptsetsockoptoptlen引數實際上是int [*](這就是4.x BSD和libc4以及libc5所使用的)。一些POSIX混淆導致了目前的socklen_t,glibc也使用它。另見accept(2)。

缺陷

一些套接字選項應該在較低的系統級別處理。

參見



previous next Printer Friendly

廣告


  

廣告



廣告
© . All rights reserved.