Java 服务器 - 如何从 InputStreamReader 获取输入并将其转换为字符串?
Java Server - How to take input from InputStreamReader and convert to a String?
我正在尝试让一个非常简单的 Client-Server
系统工作,其中 Client
将一个字符串发送到 Server
,server
然后将该字符串存储到一个文件中。
客户端发送字符串通过:
//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)) 以亲自查看上面的内容。
我正在尝试让一个非常简单的 Client-Server
系统工作,其中 Client
将一个字符串发送到 Server
,server
然后将该字符串存储到一个文件中。
客户端发送字符串通过:
//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)) 以亲自查看上面的内容。