3

我们想在端口 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 的设备,该设备带有本机 Windows 应用程序。Windows 本机应用程序正在接收来自该设备的数据。我们必须通过我们的 java 项目在端口 7777 上接收该数据。

在上面的代码中,

  1. 创建了 java 服务器套接字,但没有从设备接收到传入连接。

  2. java 服务器套接字正在接收来自 telnet 命令的连接。

  3. 设备和其他本地应用程序使用的数据格式可能不同,但至少必须从 java 服务器套接字连接。这是对的吗?

  4. 如何接收传输到端口 7777 的数据。

编辑:

好的,数据是通过UDP套接字接收的。它的长度为 68。设备文档没有指定任何方法来捕获此数据,因为它可能被设计为与指定的应用程序一起使用。我们也无法联系到制造商。有什么方法(如果可能的话)知道传入字节的格式。我们已经尝试过网络嗅探器,但我们无法理解格式。

4

2 回答 2

5

如果您从 telnet 命令接收,那么我怀疑您遇到了特定于网络的问题。

  1. 您的设备与您配置 telnet 的 IP 地址/主机名不同
  2. 您有路由或防火墙问题
  3. 您的设备是否可能使用 UDP 而不是 TCP?
于 2013-07-30T10:02:59.377 回答
3

创建了 java 服务器套接字,但没有从设备接收到传入连接。

因此,要么存在防火墙,要么设备未尝试连接到该端口。

java 服务器套接字正在接收来自 telnet 命令的连接。

因此 Java 应用程序正在侦听该端口。

设备和其他本地应用程序使用的数据格式可能不同,但至少必须从 java server socket 连接。这是对的吗?

是的。

如何接收传输到端口 7777 的数据。

首先,您必须接受连接。根据这里的证据,该设备根本没有连接到端口 7777。我建议一些网络嗅探是为了看看它到底在做什么。

于 2013-07-30T10:02:15.540 回答