Java 服务器 - 如何从 InputStreamReader 获取输入并将其转换为字符串?

标签 java client server dataoutputstream inputstreamreader

我正在尝试让一个非常简单的客户端-服务器系统工作,其中客户端将向服务器发送一个字符串 >,然后服务器会将该字符串存储到文件中。

客户端通过以下方式发送字符串:

//Other Code

sockStrm = new DataOutputStream (clientSocket.getOutputStream ());

//Other code

sockStrm.writeChars (line);

//Other code

服务器收到字符串:

//Other code 

strm = new BufferedReader (new InputStreamReader (clientSocket.getInputStream ())); 

//Other code

stringLine = strm.readLine (); 

//Other code

当我发送字符串STOP时,在客户端该字符串的长度为4,在服务器端该字符串的长度为9并显示为STOP

我尝试在服务器端对接收到的字符串进行子串,但没有成功。

有关于如何处理这个问题的指导吗?

最佳答案

使用对称方法:

DataOutputStream sockStrm =...
sockStrm.writeUTF(str);

DataInputStream sockStrm = ...
String str = sockStrm.readUTF();

writeChars 将单个字符写入两个字节值。读者按照编码从字节序列中重构字符串,肯定不会每个字符编码都按照高字节-低字节。因此,您会得到一些零字节与原始低字节值的混合体,因此您仍然可以看到原始字符串值。 使用\x00 表示 NULL 字节:

S-T-O-P => on the line: \x00-S-\x00-T-\x00-O-\x00-P => prints as STOP

对传入字符串的字符使用循环并显示它们的整数值 (str.charAt(i)) 以亲自查看上述内容。

关于Java 服务器 - 如何从 InputStreamReader 获取输入并将其转换为字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28425942/

相关文章:

java - 使用 Jackson ObjectMapper 的 JSON 反序列化 Joda Money 导致异常

windows - 使用批处理脚本将文件从一台服务器传输到另一台服务器

java - 检测apk下载来源

java - 匹配 FREAK 描述符的最佳方式?

java - 解锁手机后 Android 相机预览停止

java - Freemarker - 从 flt 模板和 java 方法生成 xml

java - 查找尝试连接到 ServerSocket 的程序的 IP

Java Serversocket不接受连接

c++ - 使用 C++ 服务器-客户端的 GET 和 PUT 命令

PHP - 如何在大量文件中替换字符串?