java - PrintWriter 不发送我的字符串 (TCP/IP)

标签 java tcp ip printwriter

我正在制作一个具有基本聊天功能的java小程序(您可以发送/接收消息)。我已经创建了一个单独的线程来处理客户端版本上的连接,并且服务器也为每个连接的客户端创建了一个线程。

在客户端的 run() 方法中,我有一个 while 循环来读取收到的任何消息:

while (state == ConnectionState.CONNECTED) {
   out.println("Hello Server");
   out.flush();
   String input = in.readLine();
   System.out.println(input);
   if(input == null){
      connectionClosedFromOtherSide();
   }
   else {
      received(input);
      System.out.println(String.format("Recieved something: %s", input));
   }
}

这是我的 PrintWriter 和 BufferedReader。出于调试目的,我将“hello server”放在这里。此代码工作正常,但问题在于 sendtext() 方法:

synchronized private void sendText(String tosend) {
   if(out != null && state == ConnectionState.CONNECTED){
      out.print(tosend);
      out.flush();
      System.out.println(String.format("sending %s to server", tosend));
   }
}

由于某种原因,如果我调用此方法,服务器端不会收到它。 (但是控制台确实显示已发送)

有人可以帮我解决这个问题吗?

最佳答案

客户端,每个

String input = in.readLine(); // read until newline

应该在服务器端平衡

out.println( tosend ); // print the newline expected by the client

out.flush() 不要发送换行符。

关于java - PrintWriter 不发送我的字符串 (TCP/IP),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13057740/

相关文章:

java - 如何使用 Travis CI 上的构建矩阵设置运行 API 25 的模拟器?

asp.net - IIS 网络错误 (tcp_error)

python - 有时会出现乱码结果,通过 TCP 套接字将 base64 编码图像从 python 发送到 node.js

php - 使用php获取网站ip

ubuntu - 无法在主机外部 ping 我的 docker 容器

java - 如何拆分并打印 JSON/String 的一部分?

java - Java Maven 项目的 Marginalia/Docco/etc?

c++ - 我如何在 Boost ASIO 中获得等待 async_read_some 的函数?

java - 使用通配符 IP 地址获取域名

java - 如何计算java BufferedImage文件大小