【问题标题】:Reading a String array [NETWORKING]读取字符串数组 [网络]
【发布时间】:2013-12-01 03:42:00
【问题描述】:

我有这个代码块来读取从服务器发送到客户端的最近更新的数组,问题是有时它可以工作,有时它不工作。它会正确打印出版本,但其他所有内容要么不打印,要么全部打印在同一行,要么在同一行有 2 个。

这样做的目的是接收来自服务器的最近更新的 String[],它被循环并作为单独的 String 发送。然后这些更新会显示在 GUI 上。

private Response update() {
    try {
        Socket socket = new Socket(RS2Client.IP, 55555);
        byte[] bytes = new byte[1024];
        socket.getInputStream().read(bytes);
        String version = new String(bytes);
        System.err.println("VERSION READ " + version);
        for (int i = 0; i < 6; i++) {
            byte[] b = new byte[1024];
            socket.getInputStream().read(b);
            String text = new String(b);
            getRecentUpdates().add(text.trim());
            System.out.println("New update: " + text);
        }
        for (String update : getRecentUpdates()) {
            System.err.println(update);
        }
        System.out.println("Client connected! Version: " + version);
        socket.close();
        if (Double.parseDouble(version) != RS2Client.CLIENT_VERSION) {
            return Response.BAD;
        }
    } catch (Exception e) {
        e.printStackTrace();
        return Response.ERROR;
    }
    return Response.GOOD;
}

【问题讨论】:

    标签: java sockets networking inputstream


    【解决方案1】:

    套接字发送字节流。它不会跟踪您发送的每个字节数组的结尾。

    如果你想发送一个字节数组,你应该先发送长度,这样你就知道需要多少字节。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-20
      • 1970-01-01
      • 1970-01-01
      • 2013-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-16
      相关资源
      最近更新 更多