java - 它不会从服务器返回任何内容!

标签 java networking

我有 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/

相关文章:

连接网络上的计算机

c - socket编程中的select函数

安卓网络地址

java - Queue 接口(interface)的 add() 和 Offer() 方法之间的区别

java - 如何从java向mysql插入自动增量值

java - 如何将gradle ear Artifact 导入Intellij

linux - 通过 SSH 连接到同一网络上的计算机

php - 在单独的服务器上,PHP 和 MySQL 之间可以有多少连接/秒?

java - 如何在文件行出现时读取它们并将它们表示为 Flux?

java - 从具有相同名称的线程中调用父方法