我正在尝试使用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:非ECT(不支持ECN的传输))
我希望看到wireshark中的变化,但我只看到默认值为零。
发布于 2014-10-08 23:51:24
上一次我在Java语言中使用DSCP值时,由于JVM中的一个bug,不得不将java.net.preferIPv4Stack系统属性设置为true。否则DSCP值将不会在底层套接字上设置,尽管看起来可以在java.net.Socket应用程序接口中工作。
此外,在连接套接字之前,您可能必须调用setTrafficClass,在某些平台上,连接后可能无法工作。
java -Djava.net.preferIPv4Stack=true ...
https://stackoverflow.com/questions/26260778
复制相似问题