在IP头中,有一Type-of-Service字段,该字段描述了IP包的

优先级和QoS选项,使用IP_TOS可以来设定该字段的值:
使用setsockopt设置IP_TOS代码如下:
unsigned char  service_type = 0xe0 | IPTOS_LOWDELAY | IPTOS_RELIABILITY;
if(setsockopt(sock, SOL_IP/*IPPROTO_IP*/, IP_TOS, (void *)&service_type, sizeof(service_type)) < 0)
perror("setsockopt(IP_TOS) failed:");
使用getsockopt读取IP_TOS代码如下:
int optval = 0;
int optlen = sizeof(optval);
if(getsockopt(sock, SOL_IP, IP_TOS, (void *)&optval, &optlen) < 0)
perror("getsockopt(IP_TOS) failed:");
else
printf("OPTVAL=%x.\n", optval)
在socket设置IP_TOS后,用wireshark抓取该socket上发送的数据,查看IP头部可以看到设置的值。
附man手册中IP_TOS、SO_PRIORITY说明:

IP_TOS:  SOL_IP / IPPROTO_IP(BSD);  IP_TOS Set  or  receive  the  Type-Of-Service (TOS)  field

that is sent with every IP packet originating from this socket.  It is used to prioritize packets 
on the network.  TOS is a byte. There are some standard TOS flags defined: 
IPTOS_LOWDELAY to minimize delays for interactive traffic, 
IPTOS_THROUGHPUT to optimize throughput, 
IPTOS_RELIABILITY to optimize for reliability, 
IPTOS_MINCOST should be used for "filler data"  where  slow transmission doesn't matter.  
At most one of these TOS values can be specified.  Other bits are invalid and shall be cleared.  Linux sends 
IPTOS_LOWDELAY datagrams first by default, but the exact behaviour depends on the 
configured queueing discipline.  Some high priority levels may require superuser 
privileges (the CAP_NET_ADMIN capability).  The priority can also be set in a protocol 
independent way by the (SOL_SOCKET,  SO_PRIORITY) socket option (see socket(7)).

SO_PRIORITY:  SOL_SOCKET;  SO_PRIORITY Set the protocol-defined priority for all packets to be
sent on this socket.  Linux uses this value to order the networking queues: packets with a 
higher priority may be processed  first  depending on  the  selected device queueing 

discipline. For ip(7), this also sets the IP type-of-service (TOS) field for outgoing packets.

Setting a priority  outside the range 0 to 6 requires the CAP_NET_ADMIN capability.

设置socket IP_TOS选项相关推荐

  1. 设置socket IP_TOS选项 (转载)

    转自:http://zhangjunxin520.blog.163.com/blog/static/305037032011721102857609/ 在IP头中,有一Type-of-Service字 ...

  2. linux ip_tos,IP_TOS选项

    在IP头中,有一Type-of-Service字段,该字段描述了IP包的优先级和QoS选项,使用IP_TOS可以来设定该字段的值,以区分不同服务的优先级,Linux 中可以用Man 手册有ip_tos ...

  3. Socket/ServerSocket 选项

    Socket/ServerSocket 选项 原文:Socket/ServerSocket 选项 在网络编程中,Socket/ServerSocket有一些选项用来自定义一些行为,现在分享一下. So ...

  4. setsockopt 设置socket 详细用法

    1.closesocket(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该socket: BOOL bReuseaddr=TRUE; setsockopt(s,SOL_SOCKET , ...

  5. python远程调用摄像头_Python设置Socket代理及实现远程摄像头控制的例子

    为python设置socket代理首先,你得下载SocksiPy这个.解压出来之后里面会有一个socks.py文件.然后你可以把这个文件复制到python安装目录里面的Lib\site-package ...

  6. setsockopt设置套接口选项

    1.closesocket(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该socket: BOOL bReuseaddr=TRUE; setsockopt(s,SOL_SOCKET , ...

  7. setsockopt设置socket状态

    1.closesocket(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该socket: BOOL bReuseaddr=TRUE; setsockopt(s,SOL_SOCKET , ...

  8. setsockopt 设置socket

    1.closesocket(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该socket: BOOL bReuseaddr=TRUE; setsockopt(s,SOL_SOCKET , ...

  9. [转]setsockopt 设置socket

    转自:http://blog.csdn.net/qinmi/archive/2007/03/07/1523081.aspx 在bind前使用setsockopt的SO_REUSEADDR选项. 其实就 ...

最新文章

  1. 在LVM中恢复已删除的物理卷
  2. System.Windows.Forms命名空间的MessageBox.show()用法大全
  3. 文巾解题 17. 电话号码的字母组合
  4. 软件性能-概念、关注点、术语
  5. 对计算机网络的父亲,父亲节朋友圈对老爸说的话 写给父亲催泪的话简短
  6. 使用任意数量的关键字实参
  7. CTabCtrl控件标签的相关设置
  8. Sql Server 2005跨数据查询
  9. c语言编译程序的软件下载,c语言编译器(wintc)
  10. WLC5520无法通过无线客户端进行网管故障解决
  11. 数学建模——相关系数(4)——斯皮尔曼相关系数(spearman)
  12. 谷歌清楚缓存快捷键_清除浏览器缓存的快捷键是什么
  13. 微信网页授权 Vue
  14. Nginx反向代理:多域名跳转多台服务器(研发需求)
  15. numpy_subtract函数
  16. 微信小程序收藏功能实现思路
  17. Canvas 渲染优化策略
  18. 【python办公自动化(19)】利用python发送邮件(每天向邮箱发送一条定时新闻)
  19. 今年的目标 --还有两个月 我的21天计划
  20. 计算机专业是武大冷门吗,武汉大学最不好的专业是什么?附武汉大学的弱势专业名单...

热门文章

  1. BUUCTF-PWN刷题记录25(IO file attack)
  2. mysql如何插入图片和视频_mysql中怎样插入图片
  3. QQ中的相关文件功能
  4. 如何设计一个API快速开发平台?
  5. 机器学习中的数学——常用概率分布(九):经验分布(Empirical分布)
  6. JAVA软件技术人力外派外包费用怎么算?
  7. mybatisPlus根据起止时间作为条件进行查询
  8. bibtex类型以及格式要求
  9. 信息安全框架——三个方面
  10. Swift 动画 —— 数字滚动UILabel动画