gpt4 book ai didi

java - 使用 setTrafficClass 和 WireShark 的 DSCP 标记问题

转载 作者:搜寻专家 更新时间:2023-11-01 03:37:32 33 4
gpt4 key购买 nike

我正在尝试使用 setTrafficClass 标记 DSCP 值。我在两台不同的机器上设置了服务器和客户端,我能够打印 DSCP 的值,但在 WireShark 中看不到它。我在网上浏览了一些帖子,但没有任何帮助。我正在使用 Windows 7 专业版。任何帮助,将不胜感激。谢谢!

我正在更多地测试以了解如何做到这一点。这是客户端代码:

尝试{

        Socket socket = new Socket(addr, 2345);
socket.setTrafficClass(10);

PrintWriter out = new PrintWriter( socket.getOutputStream(), true);

out.println("Current DSCP value: " + socket.getTrafficClass());
out.close();
socket.close();

}

catch (Exception e) {
e.printStackTrace();
}

}

服务器:

    try {
ServerSocket serverSocket = new ServerSocket(1234);
Socket clientSocket = serverSocket.accept();

BufferedReader in = new BufferedReader(new InputStreamReader(
clientSocket.getInputStream()));

String fromClient = in.readLine();
System.out.println(fromClient);

in.close();
clientSocket.close();
serverSocket.close();

} catch (Exception e) {
e.printStackTrace();
}

}

在服务器端的控制台中:当前 DSCP 值:10

我的服务器代码和客户端在不同的机器上。

在 wireshark 中我看到:

区分服务字段:0x00(DSCP 0x00:默认值;ECN:0x00:Not-ECT(不支持 ECN 的传输))

我希望看到 wireshark 的变化,但我只看到默认值零。

最佳答案

上次我在 Java 中使用 DSCP 值时,由于 JVM 中的错误,我不得不将 java.net.preferIPv4Stack 系统属性设置为 true。尽管 DSCP 值似乎在 java.net.Socket API 中工作,但不会在底层套接字上设置 DSCP 值。

此外,您可能必须在连接套接字之前调用setTrafficClass,在某些平台上连接后可能无法正常工作。

java -Djava.net.preferIPv4Stack=true ...

关于java - 使用 setTrafficClass 和 WireShark 的 DSCP 标记问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26260778/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com