我有 2 个重要的类(客户端和服务器),我将在文本区域中写一些内容,然后通过单击发送按钮,我将调用客户端类的 Activity 方法,并将该文本发送到我的客户端类,一切正常,该文本也将打印在服务器控制台上,但我无法将该文本从服务器回显到客户端,请帮助我,谢谢。
客户端类:(其中一部分)
os = new PrintWriter(c.getOutputStream(), true);
is = new BufferedReader(new InputStreamReader(c.getInputStream()));
public static void active() {
String teXt = MainClient.getText();
os.println(teXt);
String line = is.readLine();
System.out.println("Text received: " + line);
os.flush();
is.close();
is.close();
c.close();
服务器类:(其中一部分)
BufferedReader streamIn = new BufferedReader(new InputStreamReader(client.getInputStream()));
PrintWriter streamOut =new PrintWriter(client.getOutputStream());
boolean done = false;
String line =null;
while (!done ) {
line = streamIn.readLine();
if (line.equalsIgnoreCase("bye")) {
done = true;
} else {
System.out.println(line);
streamOut.println(line);
}
}
streamIn.close();
client.close();
server.close();
最佳答案
实际上 Nettogrof 正在走正确的道路,但您还必须刷新服务器端:
line = streamIn.readLine();
if (line.equalsIgnoreCase("bye")) {
done = true;
} else {
System.out.println(line);
streamOut.println(line);
streamOut.flush(); // or ...checkError();
}
或者只是创建 PrintWriter,并将 autoFlush 设置为 true:
PrintWriter streamOut = new PrintWriter(client.getOutputStream(), true);
注意一点:您还应该测试 readLine() 是否返回 null,因为客户端将关闭连接而不发送“再见”。
第二个注意事项:PrintWriter 的实例永远不会抛出 IOException,您应该测试调用 checkError()
的错误,这也会刷新流。
关于java - 它不会从服务器返回任何内容!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2084364/