【问题标题】:Issue with DSCP marking using setTrafficClass and WireShark使用 setTrafficClass 和 WireShark 进行 DSCP 标记的问题
【发布时间】:2014-10-08 15:30:56
【问题描述】:

我正在尝试使用 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 的变化,我只看到默认值为零。

【问题讨论】:

  • 嗨 ron_g_1 ~~~有结果吗??????我同样的问题~~~~~

标签: java network-programming wireshark


【解决方案1】:

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

另外你可能需要在连接套接字之前调用setTrafficClass,在某些平台上连接后可能无法工作。

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

【讨论】:

  • @ron_g_1 请使用您用于setTrafficClass(int) 的参数和您期望的输出更新问题。
猜你喜欢
  • 2010-11-22
  • 2015-02-11
  • 2011-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多