Java-сокет получает больше байтов, чем ожидалось - PullRequest
0 голосов
/ 05 июня 2019

Я только что начал с Java и пытаюсь установить связь с внешним устройством через TCP / IP. Я отправляю команду на устройство и получаю соответствующий ответ.

Связь работает до сих пор, если я жду 1 секунду между отправкой и получением. Меня раздражает то, что полученные данные на 7 байтов длиннее ожидаемых. Перед ответом всегда находятся байты 2A 48 45 4C 4C 4F 2A.

Я надеюсь, что кто-то скажет мне, почему это неправильно, и если я делаю что-то не так.

    Socket socket = new Socket("192.168.0.40", 80);

    byte[] ba_sendBuffer = new byte[1024];

    // fill sendBuffer

    DataOutputStream dOut = new DataOutputStream(socket.getOutputStream());

    dOut.writeInt(ba_sendBuffer.length); // write length of the message
    dOut.write(ba_sendBuffer);           // write the message
    dOut.flush();

    // Wait for device
    Thread.sleep(1000);

    byte[] ba_responseBuffer = new byte[0];

    if (socket.isConnected())
    {
        InputStream inFromServer = socket.getInputStream();
        DataInputStream in = new DataInputStream(inFromServer);

        synchronized (in)
        {
            int length = in.available();
            ba_responseBuffer = new byte[length];

            in.readFully(ba_responseBuffer);
        }

        // ba_responseBuffer - the first 7 bytes are not expected
        // work with the response
    }

1 Ответ

0 голосов
/ 05 июня 2019

Проблема решена.Я только что получил ответ от коллеги.Я подключен к устройству через WIFI, и модуль всегда отправляет * HELLO * при открытии соединения.Вопрос исчерпан.

...