我试图让一个非常简单的Client-Server
系统工作,Client
将字符串发送到Server
,server
然后将该String存储到文件中。
客户端通过以下方式发送字符串:
//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
我试图在服务器端对收到的String进行子串,但没有运气。
有关如何处理此事的任何指示?
答案 0 :(得分:3)
使用对称方法:
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))以自行查看上述内容。