如下传参数
TOSICMP = 0x2;
result = setsockopt(pingSessions[iIndex].pingSockFd, IPPROTO_IP, IP_TOS, (char*)&TOSICMP, sizeof(TOSICMP));
按上面设置返回正确,但抓包发现 设置的TOSICMP值没起作用。
TOSICMP = 0x3;
result = setsockopt(pingSessions[iIndex].pingSockFd, IPPROTO_ICMP, IP_TOS, (char*)&TOSICMP, sizeof(TOSICMP));
result = setsockopt(pingSessions[iIndex].pingSockFd, IPPROTO_RAW, IP_TOS, (char*)&TOSICMP, sizeof(TOSICMP));
按上面这两种设置返回错误。
TOSICMP = 0x2;
result = setsockopt(pingSessions[iIndex].pingSockFd, IPPROTO_IP, IP_TOS, (char*)&TOSICMP, sizeof(TOSICMP));
按上面设置返回正确,但抓包发现 设置的TOSICMP值没起作用。
TOSICMP = 0x3;
result = setsockopt(pingSessions[iIndex].pingSockFd, IPPROTO_ICMP, IP_TOS, (char*)&TOSICMP, sizeof(TOSICMP));
result = setsockopt(pingSessions[iIndex].pingSockFd, IPPROTO_RAW, IP_TOS, (char*)&TOSICMP, sizeof(TOSICMP));
按上面这两种设置返回错误。
TOSICMP = 0x2;
result = setsockopt(pingSessions[iIndex].pingSockFd, IPPROTO_IP, IP_TOS, (char*)&TOSICMP, sizeof(TOSICMP));没有用过该功能
但是抓包发现IP层的TOS没有起作用还是 0;
如果是udp包就tos值就改过来了
icmp 头我自己构造...
udp 好象没有问题,就是raw socket 好象有问题
在我这儿UDP也有问题,很奇怪,后来查找MS的帮助说现在已经不支持直接设置TOS域,要用GQOS API来设置,可是也没有具体例子。在MS的网站山查找了半天,给的例子好像不是我想要的。ICMP包的IP头都是我自己构造的系统都给我改掉了。
哦,其实我是在vXworks下试的,vXworks UDP的socket行,而icmp的raw socket就不行 所以我就到windows下试了一下icmp的 raw socket也不行, 至于windows的udp的我没试过可能存在协议栈支持不支持的问题,奇怪是windows应该支持啊
windows自带ping 也有TOS 设置,可惜设置后ping 包出去 抓包发现TOS 字段还是0
不想windows还有这种bug?还是骗人的?
你可以试一试windows ping 功能
windows ping的TOS我早试过确实不行,不过可能是因为现在windows系统加入的QoS支持导致它不能直接设置了。