C++ IP报文TOS设置及实现,与TCP_KEEPALIVE设置

IP报文TOS设置及实现

简介

IP_TOS 设置或接收服务类型 (TOS) 字段
随源自此套接字的每个 IP 数据包一起发送。 它用于确定网络上数据包的优先级。 TOS 是一个字节。定义了一些标准的 TOS 标志:最多可以指定其中一个 TOS 值。 其他位无效,应予以清除。 默认情况下,Linux 首先发送IPTOS_LOWDELAY数据报,但确切的行为取决于配置的排队规则。 某些高优先级可能需要超级用户权限(CAP_NET_ADMIN功能)。 优先级也可以通过 (SOL_SOCKET, SO_PRIORITY) 套接字选项以独立于协议的方式设置(测试这个接口有报错)

出栈数据包的服务类型。可以指定这个值,使用以"0x"开始的16进制数,或以"0"开始的8进制数或10进制数。
例如,16进制’0x10’ = 8进制’020’ = 十进制’16’。TOS值1349就是:
IPTOS_LOWDELAY minimize delay 0x10 尽量减少交互式流量的延迟,
IPTOS_THROUGHPUT maximize throughput 0x08 优化吞吐量,
IPTOS_RELIABILITY maximize reliability 0x04 优化可靠性,
IPTOS_LOWCOST minimize cost 0x02 应该用于慢速传输无关紧要的“填充数据”

代码

可以使用 IP_TOS 在 IP 标头中设置SOCK_STREAM和SOCK_DGRAM套接字的服务类型。例如:
int tos = IPTOS_LOWDELAY; /* see <netinet/ip.h> */(minimize delay 0x10 )
setsockopt(s, IPPROTO_IP, IP_TOS, &tos, sizeof(tos));
方法2(未测试):
uint proiority = 3;
setsockopt(m_socket, SOL_SOCKET, SO_PRIORITY, &priority, sizeof(priority));

测试记录

原:
在这里插入图片描述
更改后
在这里插入图片描述

TCP/IP TCP_KEEPALIVE 介绍

参考链接
http://www.qnx.com/developers/docs/7.1/index.html#com.qnx.doc.neutrino.lib_ref/topic/g/getsockopt.html#getsockopt__TCP_KEEPALIVE
http://www.qnx.com/developers/docs/7.1/#com.qnx.doc.neutrino.lib_ref/topic/g/getsockopt.html

TCP_KEEPALIVE

level: IPPROTO_TCP
Gets or sets the amount of time in seconds between keepalive probes (the default value is 2 hours). It accepts a struct timeval parameter with the number of seconds to wait between the keepalive probes. See “Keepalive timing,” below.
获取或设置保持活动(keepalive)探测之间的间隔时间(以秒为单位)(默认值是2小时)。它接受一个结构timeval参数,其中包含keepalive探测之间等待的秒数。请参见下面的“Keepalive计时”。

保持连接时间
使用 SO_KEEPALIVE 选项打开激活探测器,使用TCP_KEEPALIVE选项设置发送探测器之前的空闲时间量(默认值为 7200 秒或两小时)。
您可以使用 sysctl() 函数设置要发送的探测器数和探测器之间的间隔,该函数修改或查询套接字管理器的状态。sysctl 实用程序的文档包括有关与 keepcnt 和 keepintvl 相关的标识符的信息。在将套接字视为已损坏之前,默认的不成功探测器数为 8,探测之间的间隔默认为 75 秒。
下面是一个打开套接字保持活动状态的示例,空闲时间为 20 秒,然后最多 3

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值