监控来自特定端口的所有传出/传入数据包

时间:2014-08-27 16:15:16

标签: java sockets

我尝试使用Java来监控端口以从我的PC获取传出/传入数据包(或套接字),更像是Wireshark所做的。

我正在使用此代码:

int portNumber = 5816;

        try {
            System.out.println("New ServerSocket...");
            ServerSocket serverSocket = new ServerSocket(portNumber);
            serverSocket.setSoTimeout(5000);

            System.out.println("Accepting...");
            serverSocket.accept();

            System.out.println("Done Accepting.");
        } catch (IOException e) {
            System.out.println(e.getMessage());
        }

现在我可以使用Wireshark查看数据包,我可以看到使用Process Hacker 2建立连接,但我总是得到这个输出:

  

New ServerSocket ...正在接受...接受超时

编辑: 这个问题, 我安装了一个应用程序,与外部服务器交换数据包(客户端或服务器都不是我的),我只想拦截这些数据包并记录它们。 他们正在使用5816端口。

1 个答案:

答案 0 :(得分:0)

Wireshark正在使用pcap library来拦截网络通信。您可以使用pcap wrapper for java来实现类似的功能。

注意:
你没有关闭套接字。但是,这段代码仍然是不正确的方法来实现你的目标。

    int portNumber = 5816;

    System.out.println("New ServerSocket...");        
    try (ServerSocket serverSocket = new ServerSocket(portNumber)) {
        serverSocket.setSoTimeout(5000);

        System.out.println("Accepting...");

        try(Socket socket = serverSocket.accept()) {
            System.out.println("Done Accepting.");
        }

    } catch (IOException e) {
        System.out.println(e.getMessage());

    }