@Envywewok

Как прочитать данные в Java с ethernet порта?

Не ищу готового решения, хотя бы помощи в какую сторону смотреть\копать (может что с преобразователем не так настраиваю или наоборот на другой стороне проблемы).
Есть датчик который шлет данные о своем местоположении в преобразователь moxa NPort 5650-8-DTL, по com порту и он передает эти же данные через ethernet в комп. Нужно прочитать данные которые приходят. Я пытался сделать это на java с помощью сокета, но в связи плохих знаний по сетям не уверен что читаю то что надо. Вот первый скрин настройки порта. 5db2f530ce97e253480238.png. На компе я поставил 192.168.10.1 и в wireshark я вижу как ,что то идет с ip который стоит на преобразователе. 5db2f5c888c01360691514.png .
String hostname = "192.168.10.4";
        int port = 4004;

        try (Socket socket = new Socket(hostname, port)) {
            InputStream input = socket.getInputStream();
            InputStreamReader reader = new InputStreamReader(input);

            int character;
            StringBuilder data = new StringBuilder();

            while ((character = reader.read()) != -1) {
                data.append((char) character);
            }
            System.out.println(data);

        } catch (UnknownHostException ex) {
            System.out.println("Server not found: " + ex.getMessage());
        } catch (IOException ex) {
            System.out.println("I/O error: " + ex.getMessage());
        }
  • Вопрос задан
  • 470 просмотров
Решения вопроса 1
https://ru.wikipedia.org/wiki/Сокеты_Беркли

www.java2s.com/Tutorials/Java/Java_Network/0020__J... надо добавить
socket.bind(new InetSocketAddress("localhost",  port));
socket.connect(new InetSocketAddress("localhost",  port));


connect()
connect() Устанавливает соединение с сервером. Возвращает целое число, представляющее код ошибки: 0 означает успешное выполнение, а −1 свидетельствует об ошибке.
bind()
bind() связывает сокет с конкретным адресом. Когда сокет создается при помощи socket(), он ассоциируется с некоторым семейством адресов, но не с конкретным адресом. До того как сокет сможет принять входящие соединения, он должен быть связан с адресом.
...
After connecting a Socket object, we can use its input and output streams using the getInputStream() and getOutputStream() methods, respectively.

...
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
mayton2019
@mayton2019 Куратор тега Java
Bigdata Engineer
Надо сначала понять роли. Клиент ты или сервер.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы