Я только что начал с 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
}