Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.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 在这段代码中read()如何返回-1值?当客户端向服务器发送数据时,服务器会正确读取。读取后,read()方法不会返回-1值_Java_Sockets - Fatal编程技术网

Java 在这段代码中read()如何返回-1值?当客户端向服务器发送数据时,服务器会正确读取。读取后,read()方法不会返回-1值

Java 在这段代码中read()如何返回-1值?当客户端向服务器发送数据时,服务器会正确读取。读取后,read()方法不会返回-1值,java,sockets,Java,Sockets,我试图在套接字编程中使用read()方法 in = new BufferedReader(new InputStreamReader(socket.getInputStream())); out = new PrintStream(socket.getOutputStream(), true, "UTF-8"); while ((s = in.read()) != -1) { char

我试图在套接字编程中使用
read()
方法

 in = new BufferedReader(new InputStreamReader(socket.getInputStream())); 
                out = new PrintStream(socket.getOutputStream(), true, "UTF-8");

                while ((s = in.read()) != -1) {
                    char c = (char) s;
                    str = str + c;
                    System.out.println(str);
                }
                System.out.println("+++++");
在这段代码中,当客户端以I:987的形式向服务器发送数据时。服务器正确地读取它。读取后,它正在等待更多的输入。但我想在读取数据后中断循环。我不想使用
println()
方法。
(s=in.read())
如何返回-1

 in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
                out = new PrintWriter(socket.getOutputStream(), true);
                s = in.read();
                while (in.ready()) { // receiving data from client
                    s = in.read();
                    char c = (char) s;
                    str = str + c;
                }
通过使用in.ready()方法,我解决了我的问题。
谢谢大家。

如果(){break;}
你的问题是什么?你发布的代码和你在标题中说的一样。从输入读取所有数据时终止。请用更多的词。我想你的阅读障碍。您可以在成功读取后测试数据的结尾,中断读取器线程,或者切换到具有非阻塞模式的NIO。socketChannel.configureBlocking(假);在这段代码中,当客户端以I:987的形式向服务器发送数据时。服务器正确读取它。读取后,它正在等待更多的输入。但我想在读取数据后中断循环。我不想使用println()方法。(s=in.read())如何返回-1。如果套接字的另一端关闭连接,read将返回-1。