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

Java Server - How to take input from InputStreamReader and convert to a String?

我正在尝试让一个非常简单的 Client-Server 系统工作,其中 Client 将一个字符串发送到 Serverserver然后将该字符串存储到一个文件中。

客户端发送字符串通过:

//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时,在客户端String的长度为4,而在服务器端String的长度为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)) 以亲自查看上面的内容。