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的返回值。

  • 相关阅读:
    uview int类型数据对required校验不生效
    使用Nexus上传jar包
    centos上使用Selenium
    vue利用checkbox实现页面内容的刷新
    uview this.$u.post 数据格式不是json,报500错误
    nodejs添加某个模块后启动灰屏
    IDEA快捷命令,提高你拔刀的速度
    如何修改Linux服务器日期时间及时区
    使用exe4j生成exe文件并且附带jre运行环境
    写了一个Word和Excel读写有关的小工具,在此记录一下
  • 原文地址:https://www.cnblogs.com/eric-geoffrey/p/4601822.html
Copyright © 2011-2022 走看看