我们想要捕获系统在端口 7777 上的数据。
public static void main(String[] args) {
try {
final ServerSocket serverSocket = new ServerSocket(7777);
new Thread("Device Listener") {
public void run() {
try {
System.out.println("Listener Running . . .");
Socket socket = null;
while ((socket = serverSocket.accept()) != null) {
System.out.println("| Incoming : "+ socket.toString());
}
} catch (Exception e) {
e.printStackTrace();
}
};
}.start();
} catch (Exception ex) {
ex.printStackTrace();
}
}
我们有一个设备可以将数据发送到端口 7777,它带有一个 native Windows 应用程序。 Windows native 应用程序正在接收来自该设备的数据。我们必须通过我们的 java 项目在端口 7777 上接收该数据。
在上面的代码中,
Java 服务器套接字已创建,但未从设备接收到传入连接。
java 服务器套接字正在接收来自 telnet 命令的连接。
设备和其他 native 应用程序使用的数据格式可能不同,但至少必须从 java 服务器套接字连接。对吗?
如何接收传输到7777端口的数据。
编辑:
好的,UDP套接字接收数据。它的长度是 68。设备文档未指定任何捕获此数据的方法,因为它可能被设计为与指定的应用程序一起使用。我们也联系不到制造商。有什么办法(如果可能的话)知道传入字节的格式。我们已经尝试过网络嗅探器,但我们无法理解格式。
最佳答案
如果您从 telnet 命令接收到信息,那么我怀疑您遇到了特定于网络的问题。
- 您的设备与您配置 telnet 时使用的 IP 地址/主机名不同
- 您有路由或防火墙问题
- 您的设备可能使用的是 UDP 而不是 TCP 吗?
关于Java监听端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17943915/