網路IPC, socket(6): socket選項

來源:互聯網
上載者:User

socket提供了兩個函數來控制socket行為, 一個用來設定選項, 一個用來查詢一個socket選項的狀態.

可以設定或查詢的三種選項是:

  • 通用選項, 工作在所有socket類型上.
  • 在socket層次管理的選項, 但是依賴於下層協議的支援.
  • 特定協議選項.

1. 設定socket選項函數:

  • 標頭檔: <sys/socket.h>
  • 原型: int setsockopt(int sockfd, int level, int option, const void *val, socklen_t len);
  • 傳回值: 成功則返回0, 出錯則返回-1.
  • 參數:
  • level: 標識了選項應用的協議(層).
    • 如果是通用選項, level設定成SOL_SOCKET.
    • 否則設定成控制這個選項的協議號, 例如:
      • TCP: IPPROTO_TCP
      • IP: IPPROTO_IP.
  • option: socket選項. 具體查APUE 465頁表.
  • val: 根據選項的不同指向一個struct或一個int.
  • len: val指向的對象的大小.

 

2. 查詢socket選項函數:

  • 標頭檔: <sys/socket.h>
  • 原型: int getsockopt(int sockfd, int level, int option, void *restrict val, socklen_t *restrict lenp);
  • 傳回值: 成功則返回0, 出錯則返回-1.
  • 參數:
    • lenp: 指向整數的指標. 在執行getsockopt之前, 設定該整數為儲存選項的緩衝區大小.

      • 如果實際的尺寸大於此值, 選項會被截斷而不報錯.
      • 如果實際的尺寸小於或等於此值, 傳回值將此值更新為實際尺寸.

 

附錄:

socket選項表
選項 參數val類型 描述
SO_ACCEPTCONN int 返回資訊指示該socket是否能監聽(僅getsockopt)
SO_BROADCAST int 如果*val非0, 廣播資料包
SO_DEBUG int 如果*val非0, 啟用網路驅動調試功能
SO_DONTROUTE int 如果*val非0, 繞過通常路由
SO_ERROR int 返回掛起的socket錯誤並清楚(僅getsockopt)
SO_KEEPALIVE int 如果*val非0, 啟用周期性keep-alive訊息
SO_LINGER struct linger 當有未發訊息並且socket關閉時, 延遲時間
SO_OOBINLINE int 如果*val非0, 將帶外資料放在普通資料中
SO_RCVBUF int 以位元組為單位的接收緩衝區大小
SO_RCVLOWAT int 接收調用中返回的以位元組為單位的最小資料量
SO_RCVTIMEO struct timeval socket接收調用的逾時值
SO_REUSEADDR int 如果*val非0, 重用bind中的地址
SO_SNDBUF int 以位元組為單位的發送緩衝區大小
SO_SNDLOWAT int 發送調用中以位元組為單位的發送的最小資料量
SO_SNDTIMEO struct timeval socket發送調用的逾時值
SO_TYPE int 標識socket類型(僅getsockopt)

 

 

 

 

 

 

 

 

 

 

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.