Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 13+;插座选项IP_TOS(设置流量等级)_Java_Sockets_Java 13 - Fatal编程技术网

Java 13+;插座选项IP_TOS(设置流量等级)

Java 13+;插座选项IP_TOS(设置流量等级),java,sockets,java-13,Java,Sockets,Java 13,显然,套接字实现是作为的一部分重新编写的,现在它使用java.base/sun.nio.ch.NioSocketImpl 试图设置traficClass,或者换句话说,设置IP头的IP_TOS字段,但没有成功 已尝试使用socket.setTrafficClass和socket.setSocketOption(StandardSocketOption.IPTOS),但我在wireshark中以及对getTrafficClass或getSocketOption的后续调用中均未看到返回0以外的值 W

显然,套接字实现是作为的一部分重新编写的,现在它使用java.base/sun.nio.ch.NioSocketImpl

试图设置traficClass,或者换句话说,设置IP头的IP_TOS字段,但没有成功

已尝试使用socket.setTrafficClass和socket.setSocketOption(StandardSocketOption.IPTOS),但我在wireshark中以及对getTrafficClass或getSocketOption的后续调用中均未看到返回0以外的值


Windows 10中出现问题,但我至少在centos7 getTrafficClass上返回了以前设置的值。

AFAIU IP_-TOS的行为高度依赖于系统:我想知道在使用
-Djava.net.preferIPv4Stack运行时,您是否会看到任何差异。
如果能进一步说明您是什么,这将是一个有用的问题做。您使用的是java.net.Socket还是java.net.DatagramSocket。了解您是否使用strace-f java测试并查看setsockopt用法也很有用。如果启用了IPv6,那么我希望看到JDK设置IPv6_TCLASS套接字选项。如果只使用IPv4,我希望看到IP_TOS套接字选项集。谢谢Alan,用java.net.socket测试它。似乎在centos 7上工作(或者至少getTrafficClass()返回以前设置的值),但在windows 10上不工作。windows采用了不同的QoS路径,多年来不支持设置IP_TOS。有一次可以调整注册表设置以允许它,但那是很久以前的事了。所以我不认为这是JDK的问题。谢谢@AlanBateman,windows中有什么东西可以设置在tcp套接字上以减少延迟吗?似乎TCP_QUICKACK也不受支持?windows走了什么路?至于这是否是JDK问题,我不理解socket.supportedOptions是否会返回IP_-TOS,如果windows对此不采取任何措施,由于windows不应将其作为一个选项报告,或者JDK不应推断这是一个受支持的选项FAIU,因此IP_TOS的行为高度依赖于系统:我想知道,在使用
-Djava.net.preferIPv4Stack
运行时,您是否会看到任何差异。扩展这个问题,以更多地说明您正在做什么,会很有用。您使用的是java.net.Socket还是java.net.DatagramSocket。了解您是否使用strace-f java测试并查看setsockopt用法也很有用。如果启用了IPv6,那么我希望看到JDK设置IPv6_TCLASS套接字选项。如果只使用IPv4,我希望看到IP_TOS套接字选项集。谢谢Alan,用java.net.socket测试它。似乎在centos 7上工作(或者至少getTrafficClass()返回以前设置的值),但在windows 10上不工作。windows采用了不同的QoS路径,多年来不支持设置IP_TOS。有一次可以调整注册表设置以允许它,但那是很久以前的事了。所以我不认为这是JDK的问题。谢谢@AlanBateman,windows中有什么东西可以设置在tcp套接字上以减少延迟吗?似乎TCP_QUICKACK也不受支持?windows走了什么路?至于这是否是JDK的问题,我不理解socket.supportedOptions在windows不采取任何措施的情况下返回IP_TOS,因为windows不应将其作为选项报告,或者JDK不应推断这是受支持的选项