Java 中的 PrintWriter 或任何其他输出流不知道“\r\n”

2023-12-26

我在使用 PrintWriter 或任何其他输出流在服务器和客户端程序之间发送消息时遇到问题。如果我使用 println("abc") 进行通信,它可以正常工作,但是如果我使用 print("abc\r\n")、print("abc\n") 或 print("abc\r") 则它不起作用)。我所说的“它不起作用”的意思是 readLine() 不会结束,因为它似乎没有看到“换行符”并且它仍在等待“\r”或“\n”

为了更清楚地说明这一点,我将简单地在下面添加一些代码: 客户端:

import java.net.*;
import java.io.*;

public class Server {
  public static void main(String[] args) throws IOException {

    ServerSocket serverSocket = null;
    try {
        serverSocket = new ServerSocket(1234);
    } catch (IOException e) {
        System.err.println("Could not listen on port: 1234.");
        System.exit(1);
    }

    Socket clientSocket = null;
    try {
        clientSocket = serverSocket.accept();
    } catch (IOException e) {
        System.err.println("Accept failed.");
    }
    System.out.println("Connected");


    PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
    BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));

    String textFromClient;
    textFromClient = in.readLine(); // read the text from client
    System.out.println(textFromClient); 


    String textToClient = "Recieved";
    out.print(textToClient + "\r\n");  // send the response to client

    out.close();
    in.close();
    clientSocket.close();
    serverSocket.close();
  }
}

服务器:

import java.net.*;
import java.io.*;

public class Client {
public static void main(String[] args) throws IOException {

    Socket socket = null;
    PrintWriter out = null;
    BufferedReader in = null;
    BufferedReader read = new BufferedReader(new InputStreamReader(System.in));

    try {
        socket = new Socket("localhost", 1234);
        out = new PrintWriter(socket.getOutputStream(), true);
        in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
    } catch (UnknownHostException e) {
        System.err.println("Don't know about host");
    } catch (IOException e) {
        System.err.println("Couldn't get I/O for the connection");
    }
    System.out.println("Connected");

    String textToServer;

    textToServer=read.readLine();
    out.print(textToServer + "\r\n" );  // send to server

    System.out.println(in.readLine()); // read from server

    out.close();
    in.close();
    read.close();
    socket.close();
  }
}

我想使用 print() + "\r\n" 而不是 println() ,因为我正在编写的服务器程序要求从服务器发送到客户端的消息需要在末尾包含 "\r\n",例如。 “这是从服务器到客户端的消息\r\n”。我认为 println() 与 print("\r\n") 相同,所以我认为我不应该使用 println() + "\r\n",否则它将有 2 个换行符。 (虽然我不知道客户端如何从服务器读取,因为我被要求只编写服务器程序。他们会编写客户端来测试我的服务器程序。)但是,我应该发送包含“\ r\n" 位于末尾,但 readLine() 似乎无法识别它。那么我能用它做什么呢?

如果你不明白我的问题,你可以试试上面的代码,你就会明白我的意思。


Call flush()从客户端写入服务器后,如下所示:

out.print(textToServer + "\r\n" );  // send to server
out.flush(); // here, it should get you going.

flush(): 刷新输出流并强制写出任何缓冲的输出字节。 https://docs.oracle.com/javase/7/docs/api/java/io/OutputStream.html#flush()

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java 中的 PrintWriter 或任何其他输出流不知道“\r\n” 的相关文章

  • 如何将本机库链接到 IntelliJ 中的 jar?

    我正在尝试在 IntelliJ 中设置 OpenCV 但是我一直在弄清楚如何告诉 IntelliJ 在哪里可以找到本机库位置 在 Eclipse 中 添加 jar 后 您可以在 Build Config 屏幕中设置 Native 库的位置
  • Spring应用中Eureka健康检查的问题

    我正在开发一个基于 Spring 的应用程序 其中包含多个微服务 我的一个微服务充当尤里卡服务器 到目前为止一切正常 在我所有其他微服务中 用 EnableEurekaClient 我想启用这样的健康检查 应用程序 yml eureka c
  • Mockito:如何通过模拟测试我的服务?

    我是模拟测试新手 我想测试我的服务方法CorrectionService correctPerson Long personId 实现尚未编写 但这就是它将执行的操作 CorrectionService将调用一个方法AddressDAO这将
  • Java 枚举与创建位掩码和检查权限的混淆

    我想将此 c 权限模块移植到 java 但是当我无法将数值保存在数据库中然后将其转换为枚举表示形式时 我很困惑如何执行此操作 在 C 中 我创建一个如下所示的枚举 public enum ArticlePermission CanRead
  • 如何使用assertEquals 和 Epsilon 在 JUnit 中断言两个双精度数?

    不推荐使用双打的assertEquals 我发现应该使用带有Epsilon的形式 这是因为双打不可能100 严格 但无论如何我需要比较两个双打 预期结果和实际结果 但我不知道该怎么做 目前我的测试如下 Test public void te
  • org.apache.hadoop.security.AccessControlException:客户端无法通过以下方式进行身份验证:[TOKEN,KERBEROS] 问题

    我正在使用 java 客户端通过 Kerberos 身份验证安全访问 HDFS 我尝试打字klist在服务器上 它显示已经存在的有效票证 我收到的异常是客户端无法通过以下方式进行身份验证 TOKEN KERBEROS 帮助将不胜感激 这是一
  • 谷歌应用程序引擎会话

    什么是java应用程序引擎 默认会话超时 如果我们将会话超时设置为非常非常长的时间 会不会产生不良影响 因为谷歌应用程序引擎会话默认情况下仅存储在数据存储中 就像facebook一样 每次访问该页面时 会话仍然永远存在 默认会话超时设置为
  • Java 公历日历更改时区

    我正在尝试设置 HOUR OF DAY 字段并更改 GregorianCalendar 日期对象的时区 GregorianCalendar date new GregorianCalendar TimeZone getTimeZone GM
  • Java 集合的并集或交集

    建立并集或交集的最简单方法是什么Set在 Java 中 我见过这个简单问题的一些奇怪的解决方案 例如手动迭代这两个集合 最简单的单行解决方案是这样的 set1 addAll set2 Union set1 retainAll set2 In
  • java.lang.IllegalStateException:提交响应后无法调用 sendRedirect()

    这两天我一直在尝试找出问题所在 我在这里读到我应该在代码中添加一个返回 我做到了 但我仍然得到 java lang IllegalStateException Cannot call sendRedirect after the respo
  • Hibernate 的 PersistentSet 不使用 hashCode/equals 的自定义实现

    所以我有一本实体书 public class Book private String id private String name private String description private Image coverImage pr
  • 像 Java 这样的静态类型语言中动态方法解析背后的原因是什么

    我对 Java 中引用变量的动态 静态类型和动态方法解析的概念有点困惑 考虑 public class Types Override public boolean equals Object obj System out println i
  • 如何在谷歌地图android上显示多个标记

    我想在谷歌地图android上显示带有多个标记的位置 问题是当我运行我的应用程序时 它只显示一个位置 标记 这是我的代码 public class koordinatTask extends AsyncTask
  • java for windows 中的文件图标叠加

    我正在尝试像 Tortoise SVN 或 Dropbox 一样在文件和文件夹上实现图标叠加 我在网上查了很多资料 但没有找到Java的解决方案 Can anyone help me with this 很抱歉确认您的担忧 但这无法在 Ja
  • Eclipse 选项卡宽度不变

    我浏览了一些与此相关的帖子 但它们似乎并不能帮助我解决我的问题 我有一个项目 其中 java 文件以 2 个空格的宽度缩进 我想将所有内容更改为 4 空格宽度 我尝试了 正确的缩进 选项 但当我将几行修改为 4 空格缩进时 它只是将所有内容
  • 使用 AsyncTask 传递值

    我一直在努力解决这个问题 但我已经到了不知道该怎么办的地步 我想做的是使用一个类下载文件并将其解析为字符串 然后将该字符串发送到另一个类来解析 JSON 内容 所有部件都可以单独工作 并且我已经单独测试了所有部件 我只是不知道如何将值发送到
  • 专门针对 JSP 的测试驱动开发

    在理解 TDD 到底是什么之前 我就已经开始编写测试驱动的代码了 在没有实现的情况下调用函数和类可以帮助我以更快 更有效的方式理解和构建我的应用程序 所以我非常习惯编写代码 gt 编译它 gt 看到它失败 gt 通过构建其实现来修复它的过程
  • 干净构建 Java 命令行

    我正在使用命令行编译使用 eclipse 编写的项目 如下所示 javac file java 然后运行 java file args here 我将如何运行干净的构建或编译 每当我重新编译时 除非删除所有内容 否则更改不会受到影响 cla
  • 如何使用mockito模拟构建器

    我有一个建造者 class Builder private String name private String address public Builder setName String name this name name retur
  • 包 javax.el 不存在

    我正在使用 jre6 eclipse 并导入 javax el 错误 包 javax el 不存在 javac 导入 javax el 过来 这不应该是java的一部分吗 谁能告诉我为什么会这样 谢谢 米 EL 统一表达语言 是 Java

随机推荐

  • Windows Server 2003 x64 上的 CruiseControl.Net

    我在使用 CruiseControl net 时遇到问题 其中 Web 仪表板无法在 IIS 中工作 我尝试过在 64 位和 32 位模式之间切换 ASP Net 并重新安装巡航控制系统 但似乎没有任何效果 还有其他人在 64 位平台上遇到
  • 有什么方法可以将文档与 Mercurial 合并但从不尝试解决冲突吗?

    这是一个以下问题 word文档的svn或mercurial版本控制 https stackoverflow com questions 6374469 svn or mercurial version control of word doc
  • 函数内部指针赋值

    我实际上无法弄清楚我在这里做错了什么 所以基本上我有一个对象指针 我将其传递给函数以将其值设置为指向新的对象实例 但它似乎不起作用 我无法解决原因 下面是我正在尝试做的事情的代码示例 GetPointer Object pointer po
  • C# 中变量之间的歧义

    首先我想说我首先进行了搜索 并在其他各种事情上发现了很多类似的问题 但不完全是这个问题 我有这个代码 namespace New Game GameClasses
  • 熊猫发现缺失的 15 分钟间隔

    我有一个数据框 df pd DataFrame customerId A A A A A A A B B B B B B B B B startOf15Min 2019 07 30T00 00 00 2019 07 30T00 15 00
  • BlackBerry OTA 安装的内容类型

    对于 BlackBerry OTA 安装 jad 和 cod 文件应使用什么内容类型 From http www oracle com technetwork systems index 139239 html http www oracl
  • 使用 json_annotation 包可序列化 Flutter JSON 如何将 JsonConverter 与 Firebase Firestore DocumentReference 结合使用

    我正在尝试使用 JSON 可序列化和自定义 JsonConverter 在模型中保存 DocumentReference 但没有正确执行 这是我的模型 DocumentSerializer DocumentReference recentT
  • 通过调用带参数的URL获取json对象

    这看起来是一个简单的问题 但我有一个编码员的心理障碍 这个概念 我输入一个 URL 即 www mysite com getStuff name Jerry ocupation Engineer Id 12345 我不想返回网页或其他内容
  • 在 C++ 代码中初始化 C 结构

    有没有更好的方法在 C 代码中初始化 C 结构 我可以在变量声明点使用初始化列表 但是 如果所有参数在编译时未知 或者如果我没有声明本地 全局实例 则这没有那么有用 例如 声明该结构的遗留 C 代码 并且还有使用它的 API typedef
  • 数据库设计 - 空字段[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我目前正在与我的开发团队讨论一个问题 他们认为空旷的田地是个坏消息 例如 如果我们有一个客户详细信息表 用于存储来自不同国家 地区的客户数据 并
  • Datastax:重新准备已准备好的查询警告

    我有这个代码 UUID notUuid UUIDs timeBased PreparedStatement pstmt cqlSession prepare INSERT INTO mytable userId notifId notifi
  • 如何使用GSON将json文件解析为java POJO类

    我正在使用 GSON 解析 JSON 文件 并且想将此 JSON 对象映射到 POJO 类 问题是 JSON 中的属性名称没有驼峰式大小写 但我的 java POJO 对象具有驼峰式大小写属性名称 有没有什么想法不会影响性能 例如 JSON
  • 更新 GAC dll

    我在 GAC 中注册了一个 DLL 其中有一个错误 v4 2 0 因此 我修复了该错误 仅更新了文件版本 v4 2 1 保留程序集版本 v4 2 0 并构建了一个新的 MSI 包 问题是 DLL 没有安装在 GAC 中 我通过右键单击 DL
  • 使结构体变得易失性是否会使其所有成员都易失性?

    如果我有 struct whatever int data volatile whatever test will test data也会波动吗 可以提出另一个问题 或者只是用另一种方式来看待原始问题 是否制作一个结构体const使其所有成
  • 为当前的下一行数据编写脚本

    如果我想复制下一行的数据该怎么办 例如 客户 A 于 2015 年 1 月 1 日开始当前行程 下一次行程于 2015 年 1 月 15 日开始 因此 他当前行程的结束日期将为 2015 年 1 月 14 日 即下一次行程开始的前一天 我可
  • Spring REST 错误处理:无法获取我的自定义消息

    我读了几篇关于服务器端错误处理的文章 教程 我只想用我的自定义消息返回一个 http 错误代码 当然这是行不通的 我在 javascript 回调中始终得到的结果是以下消息
  • Visual Studio 2005 Designer 未将控件添加到 aspx.Designer.cs

    我不是 Designer 的粉丝 我更喜欢直接在 ASPX 页面上编码 然而 自从重新格式化 并导致重新格式化 以来 designer cs手动编码到 aspx 文件时 文件未正确更新 这意味着我的代码隐藏 http en wikipedi
  • 让Python忽略.pyc文件

    有没有办法让 Python 忽略任何存在的 pyc 文件并始终直接解释所有代码 包括导入的模块 谷歌还没有找到任何答案 所以我怀疑没有 但为了以防万一 似乎值得一问 为什么我要这样做 我有一个大型 Python 脚本管道 这些脚本在数百台计
  • 编译 C 程序时体系结构 x86_64 的未定义符号[重复]

    这个问题在这里已经有答案了 我有一个简单的程序演示 use c include libhello h int main void hello return 0 libhello h void hello void libhello c in
  • Java 中的 PrintWriter 或任何其他输出流不知道“\r\n”

    我在使用 PrintWriter 或任何其他输出流在服务器和客户端程序之间发送消息时遇到问题 如果我使用 println abc 进行通信 它可以正常工作 但是如果我使用 print abc r n print abc n 或 print