Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中获取Inputstream的结尾_Java_Sockets - Fatal编程技术网

在java中获取Inputstream的结尾

在java中获取Inputstream的结尾,java,sockets,Java,Sockets,下面是我的客户端代码,它从服务器检索文本并打印 Socket socket = new Socket(ip, port); InputStream in = socket.getInputStream(); OutputStream out = socket.getOutputStream(); String string = "Hello!\n"; byte buffer[] = string.getBytes();

下面是我的客户端代码,它从服务器检索文本并打印

Socket socket = new Socket(ip, port);
        InputStream in = socket.getInputStream();
        OutputStream out = socket.getOutputStream();
        String string = "Hello!\n";
        byte buffer[] = string.getBytes();
        out.write(buffer);


    while ((character = in.read()) != -1){
            System.out.print((char) character);
        }

我正在从服务器获取正确的值,但这种情况一再发生,我如何才能找到发送的值的长度。

-1
表示流的结束,并在连接关闭时接收。如果希望保持连接打开并发送多条消息,则需要某种协议(类似于两端之间的协议)来告知消息的结束位置。实现这一点的方法有很多,但在您的示例中,您正在将行终止符(
\n
)写入消息的末尾,因此您可以在另一端检查它。另一种方法是在实际消息内容之前写入要发送的字节数。

一次又一次发生了什么?