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

时间:2014-05-12 15:44:35

标签: java sockets

我正在尝试在套接字编程中使用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。

1 个答案:

答案 0 :(得分:0)

 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()方法我解决了我的问题。 谢谢大家。