Java 如何在不干扰的情况下监听端口上的流量

Java how to listen for traffic on port without interfering

在Java中,我如何在不干扰的情况下监听端口上是否有任何流量?

我有一个 java 应用程序,它通过 UDP 与某些硬件进行通信。但是,存在一种旧产品可以使用 23982 上的端口转发与硬件进行远程通信。

两个系统无法同时与硬件通信,所以我需要在端口 23982 上监听。如果端口上有任何流量(即遗留软件是主动连接到硬件)我需要给遗留系统优先权。

因此我需要监听但不干扰从端口 23982 转发的流量

我想你想使用 ServerSocket

int port = 23982;
java.net.ServerSocket serverSocket = new java.net.ServerSocket(port);
java.net.Socket client = serverSocket.accept(); 
// blocks until there is a connection-request. So you can
// now handle your notification, because if the program reaches this part of code, 
// a client has connected, e.g.:

boolean connected = true;

只要打开端口就会干扰流量,行为会从 "unable to connect" 立即变为 "server not responding" 超时后。