日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

setsockopt与getsockopt的参数解析与使用

發(fā)布時間:2024/3/12 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 setsockopt与getsockopt的参数解析与使用 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章鏈接:https://codemouse.online/archives/2020-03-02-111858

對socket設(shè)置和獲取

  • 代碼聲明

    #include <sys/types.h> #include <sys/socket.h> int getsockopt(int sock, int level, int optname, void *optval, socklen_t *optlen); int setsockopt(int sock, int level, int optname, const void *optval, socklen_t optlen);
  • 參數(shù)說明

    sock:將要被設(shè)置或者獲取選項(xiàng)的套接字。
    level:選項(xiàng)所在的協(xié)議層。
    optname:需要訪問的選項(xiàng)名。
    optval:對于getsockopt(),指向返回選項(xiàng)值的緩沖。對于setsockopt(),指向包含新選項(xiàng)值的緩沖。
    optlen:對于getsockopt(),作為入口參數(shù)時,選項(xiàng)值的最大長度。作為出口參數(shù)時,選項(xiàng)值的實(shí)際長度。對于setsockopt(),現(xiàn)選項(xiàng)的長度。

  • level取值:

    SOL_SOCKET:通用套接字選項(xiàng) .
    IPPROTO_IP:IP選項(xiàng).
    IPPROTO_TCP:TCP選項(xiàng).

  • 返回說明

    成功執(zhí)行時,返回0。失敗返回-1,errno被設(shè)為以下值
    EBADF:sock不是有效的文件描述詞
    EFAULT:optval指向的內(nèi)存并非有效的進(jìn)程空間
    EINVAL:在調(diào)用setsockopt()時,optlen無效
    ENOPROTOOPT:指定的協(xié)議層不能識別選項(xiàng)
    ENOTSOCK:sock描述的不是套接字

SOL_SOCKET

選項(xiàng)名稱說明數(shù)據(jù)類型
SO_BROADCAST允許發(fā)送廣播數(shù)據(jù)int
SO_DEBUG允許調(diào)試int
SO_DONTROUTE不查找路由int
SO_ERROR獲得套接字錯誤int
SO_KEEPALIVE保持連接int
SO_LINGER延遲關(guān)閉連接struct linger
SO_OOBINLINE帶外數(shù)據(jù)放入正常數(shù)據(jù)流int
SO_RCVBUF接收緩沖區(qū)大小int
SO_SNDBUF發(fā)送緩沖區(qū)大小int
SO_RCVLOWAT接收緩沖區(qū)下限int
SO_SNDLOWAT發(fā)送緩沖區(qū)下限int
SO_RCVTIMEO接收超時struct timeval
SO_SNDTIMEO發(fā)送超時struct timeval
SO_REUSERADDR允許重用本地地址和端int
SO_TYPE獲得套接字類型int
SO_BSDCOMPAT與BSD系統(tǒng)兼容int

IPPROTO_IP

選項(xiàng)名稱說明數(shù)據(jù)類型
IP_HDRINCL在數(shù)據(jù)包中包含IP首部int
IP_OPTINOSIP首部選項(xiàng)int
IP_TOS服務(wù)類型
IP_TTL生存時間int

IPPRO_TCP

選項(xiàng)名稱說明數(shù)據(jù)類型
TCP_MAXSEGTCP最大數(shù)據(jù)段的大小int
TCP_NODELAY不使用Nagle算法int

使用例子

// 設(shè)置廣播包 int yes = 1; setsockopt(sock, SOL_SOCKET, SO_BROADCAST, &yes, sizeof(yes));

總結(jié)

以上是生活随笔為你收集整理的setsockopt与getsockopt的参数解析与使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。