【问题标题】:How to take an array of bytes over a socket [closed]如何通过套接字获取字节数组[关闭]
【发布时间】:2013-08-15 11:11:15
【问题描述】:

晚上好。有一个套接字连接。来自服务器的消息是 8 个字节。在建立连接之前,如何将它们作为无穷无尽的流读入?客户端部分是用 Java 编写的。

【问题讨论】:

  • 你的意思是有一个客户端通过 TCP 套接字连接到服务器,服务器发送 8 个字节,你希望客户端循环读取这些字节,直到服务器关闭连接?
  • 点击服务器上的一个按钮,它会向 - 8 个字节发送一条消息。客户端必须收到相同的消息

标签: java arrays sockets client byte


【解决方案1】:

要从套接字读取 8 个字节,直到服务器关闭套接字,请使用类似于以下内容的内容:

void readSocket(Socket socket)
{
    try
    {
        byte[] data = new byte[8];
        int ret;
        while (true)
        {
            int offset=0;
            // keep reading until we got 8 bytes
            while (offset < data.length)
            {
                // when read returns 0 means the socket is closed.
                // if return < 0 there is an error in both cases we must quit.
                if ((ret = socket.getInputStream().read(data, offset, data.length-offset)) <= 0) return;
                offset+=ret;
            }
            // We got 8 bytes, process them
            // ... and loop for next packet
        }
    }
    catch (Exception e)
    {
        e.printStackTrace();
        // there is an error in the socket, quit.
        return;
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多