【问题标题】:Can`t receive Response from server Socket in Java [duplicate]无法从 Java 中的服务器套接字接收响应 [重复]
【发布时间】:2020-03-19 08:43:07
【问题描述】:

我是 Java 套接字的新手,我尝试编写一个简单的 Java 应用程序,它有一个 ServerSocket,接受一个请求,并将输入字符串反转。当我使用 telnet 到该端口测试服务器套接字时,它可以工作!但是对于我的 Client 类,它没有给我任何回应......

发送文本的服务器上的代码:

                            System.out.println(input);
                            String output = "";
                            StringBuilder abc = new StringBuilder();
                            abc.append(input);
                            abc = abc.reverse();
                            abc.append("\n");
                            OutputStream outStream = b.getOutputStream();
                            PrintWriter out = new PrintWriter(outStream);
                            out.print(abc);
                            out.flush();
                            out.close();

客户端上的代码应该..从服务器接收响应:

            String input = JOptionPane.showInputDialog(null, "Input Message(q to Quit):");
            if(input.equals("q")) {
                try {
                    s.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                return;
            }
            PrintWriter pw = new PrintWriter(s.getOutputStream(),true);

            pw.print(input);
            pw.flush();
            BufferedReader bufferedReader = new BufferedReader( new InputStreamReader( s.getInputStream())); //BufferedReader aus Socket inputStreamReader
            String line = null;
            boolean wait = true;
            while((line = bufferedReader.readLine()) != null) {
                System.out.println(line);
            }

谢谢!

【问题讨论】:

  • 像往常一样在这里提出一千个问题。您正在阅读线路,但您没有发送线路。使用println(),或以其他方式在消息后发送行终止符。 NB ServerSocket 不发送响应。

标签: java sockets bufferedreader readline printwriter


【解决方案1】:

所以,我刚刚发现问题出在客户端类中的 PrintWriter 中。我必须打电话给pw.println() 而不是pw.print(),现在一切正常!没有 println,PrintWriter 不会向服务器类发送任何信息。

【讨论】:

  • 错了。 readLine() 直到发送一个行终止符才会返回,println() 发送一个 print() 没有的。然而,它确实会发送其他所有内容,连同flush()
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-03-30
  • 2014-02-06
  • 1970-01-01
  • 2016-07-19
  • 2014-08-22
  • 1970-01-01
  • 2017-01-02
相关资源
最近更新 更多