zoukankan      html  css  js  c++  java
  • socket选项设置

    #include <sys/socket.h>
    int setsockopt( int socket, int level, int option_name, const void *option_value, size_t option_len);
    第一个参数socket是套接字描述符。第二个参数level是被设置的选项的级别,如果想要在套接字级别上设置选项,就必须把level设置为 SOL_SOCKET。
    option_name指定准备设置的选项,option_name可以有哪些取值,这取决于level,以linux 2.6内核为例(在不同的平台上,这种关系可能会有不同):

    • SO_DEBUG,打开或关闭调试信息, 当option_value非0时,打开调试信息,否则,关闭调试信息。
    • SO_REUSEADDR,打开或关闭地址复用功能,当option_value非0时,打开,否则,关闭。
    • SO_DONTROUTE,打开或关闭路由查找功能,当option_value非0时,打开,否则,关闭。
    • SO_BROADCAST,允许或禁止发送广播数据,当option_value非0时,允许,否则,禁止。
    • SO_SNDBUF,设置发送缓冲区的大小。发送缓冲区的大小是有上下限的,其上限为256 * (sizeof(struct sk_buff) + 256),下限为2048字节。
    • SO_RCVBUF,设置接收缓冲区的大小。接收缓冲区大小的上下限分别是:256 * (sizeof(struct sk_buff) + 256)和256字节。
    • SO_KEEPALIVE,套接字保活。如果协议是TCP,并且当前的套接字状态不是侦听(listen)或关闭(close),那么,当option_value不是零时,启用TCP保活定时器,否则关闭保活定时器。
    • SO_OOBINLINE,紧急数据放入普通数据流。
    • SO_NO_CHECK,打开或关闭校验和。
    • SO_PRIORITY,设置在套接字发送的所有包的协议定义优先权。这个值在0到6之间(包括0和6)
    • SO_LINGER,如果选择此选项, close或 shutdown将等到所有套接字里排队的消息成功发送或到达延迟时间后>才会返回. 否则, 调用将立即返回。

     该选项的参数(option_value)是一个linger结构:
     struct linger {
        int l_onoff; /* 延时状态(打开/关闭) */
        int l_linger; /* 延时多长时间 */
    };

    如果linger.l_onoff值为0(关闭),否则,置该位。

    • SO_PASSCRED,允许或禁止SCM_CREDENTIALS 控制消息的接收。
    • SO_TIMESTAMP,打开或关闭数据报中的时间戳接收。
    • SO_RCVLOWAT,设置接收数据前的缓冲区内的最小字节数。
    • SO_RCVTIMEO,设置接收超时时间。
    • SO_SNDTIMEO,设置发送超时时间。
    • SO_BINDTODEVICE,将套接字绑定到一个特定的设备上。
    • SO_ATTACH_FILTER和SO_DETACH_FILTER。

    以上所介绍的都是在SOL_SOCKET层的一些套接字选项,如果超出这个范围,最终会得到- ENOPROTOOPT的返回值。

  • 相关阅读:
    Linux常用命令-centos
    USACO 2006 Open, Problem. The Country Fair 动态规划
    USACO 2007 March Contest, Silver Problem 1. Cow Traffic
    USACO 2007 December Contest, Silver Problem 2. Building Roads Kruskal最小生成树算法
    USACO 2015 February Contest, Silver Problem 3. Superbull Prim最小生成树算法
    LG-P2804 神秘数字/LG-P1196 火柴排队 归并排序, 逆序对
    数据结构 并查集
    浴谷国庆集训 对拍
    1999 NOIP 回文数
    2010 NOIP 普及组 第3题 导弹拦截
  • 原文地址:https://www.cnblogs.com/eric-geoffrey/p/4601822.html
Copyright © 2011-2022 走看看