2013-07-30 5 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 получает данные, поступающие с этого устройства. Мы должны получить эти данные на порту 7777 через наш проект java.

В приведенном выше коде,

  1. сокет сервера Java создается, но не входящие соединения не поступает из устройства.

  2. Сокет java-сервера принимает соединения из команды telnet.

  3. Формат данных, который используется устройством и другим родным приложением, может быть другим, но по крайней мере он должен быть подключен из сокета Java-сервера. это правильно?

  4. , как получить данные, которые передается в порт 7777.

РЕДАКТИРОВАТЬ:

Хорошо, данные, полученные с UDP-сокета. он имеет длину 68. В документации устройства не указаны какие-либо методы для захвата этих данных, поскольку, возможно, он предназначен для работы с указанным приложением. Мы также не можем связаться с производителем. есть ли какой-либо способ (если возможно) знать формат входящих байтов. мы попробовали сетевые снифферы, но мы не можем понять формат.

ответ

5

Если вы получаете от команды telnet, то я подозреваю, что у вас есть проблема, связанная с сетью.

  1. устройство не разговаривает с тем же IP-адрес/имя хоста, который вы настраиваете телнет с
  2. у вас есть маршрутный или межсетевой экран Issue
  3. это устройство возможно с использованием UDP, а не TCP ?
+0

Спасибо, это UDP-порт – user2463026

+0

@ user2463026 Итак, если это порт UDP, почему вы пытаетесь использовать TCP-сервер? – EJP

+0

Нет, позже я изменил свой код с помощью сокета 'DatagramSocket'. – user2463026

3

Сокет java-сервера создается, но входящие соединения не принимаются с устройства.

Так или есть брандмауэр на этом пути или устройство не пытается подключиться к этому порту.

Сокет java-сервера принимает соединения из команды telnet.

Так что приложение Java слушает этот порт.

Формат данных, который используется устройством и другим родным приложением, может отличаться, но по крайней мере он должен быть подключен из сокета Java-сервера. это правильно?

Да.

как получить данные, которые передаются в порт 7777.

Сначала вы должны принять соединение. О доказательствах здесь устройство не подключается к порту 7777. Я предлагаю, чтобы какое-то сетевое обнюхивание было для того, чтобы понять, что он делает.