Java套接字收到的字节数超出预期

时间:2019-06-05 11:12:47

标签: java sockets datainputstream

我刚开始使用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 :(得分:0)

问题已解决。我刚刚收到同事的答复。我通过WIFI连接到设备,打开连接时,模块始终发送* HELLO *。问题已经解决。