2013-07-30 50 views
2

我们想捕捉它涉及到系统端口的数据说,7777的Java侦听端口

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. 其中使用由所述设备和所述其他本机应用程序可以是不同的数据格式,但它ATLEAST必须被从Java服务器套接字连接。这是对的吗?

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

编辑:

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

回答

5

如果你从telnet命令接收,那么我怀疑你有一个特定的网络问题。

  1. 你的设备是不是和你说话有路由或防火墙的问题相同的IP地址/主机名,你用
  2. 配置Telnet
  3. 是使用UDP,而不是TCP设备可能
+0

感谢它是UDP端口 – user2463026

+0

@ user2463026因此,如果它是一个UDP端口,你为什么要使用TCP'ServerSocket'? – EJP

+0

不,后来我用'DatagramSocket'套接字更改了我的代码。 – user2463026

3

java服务器套接字已创建,但未收到来自设备的传入连接。

所以无论是有防火墙的方式或设备没有试图连接到该端口。

Java服务器套接字接收来自telnet命令的连接。

所以Java应用程序正在侦听端口。

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

是的。

如何接收被发送到端口7777

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