Java 套接字接收的字节数比预期的多
Java socket receives more bytes than expected
我刚开始使用 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
}
问题已解决。我刚收到一位同事的答复。我通过 WIFI 连接到设备,模块在打开连接时总是发送 * HELLO *。问题已解决
我刚开始使用 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
}
问题已解决。我刚收到一位同事的答复。我通过 WIFI 连接到设备,模块在打开连接时总是发送 * HELLO *。问题已解决