我尝试使用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端口。
答案 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());
}