【发布时间】:2011-10-30 16:20:55
【问题描述】:
我正在尝试在我的 java 程序中通过 TCP 发送一些简单的数据:
String data = "70798090999a9b9c9d9e9fa0a1a2";
ServerSocket srvr = new ServerSocket(1234);
Socket skt = srvr.accept();
OutputStream out = skt.getOutputStream();
out.write(hexStringToByteArray(data));
out.close();
skt.close();
srvr.close();
带功能:
public static byte[] hexStringToByteArray(String s) {
int len = s.length();
byte[] data = new byte[len / 2];
for (int i = 0; i < len; i += 2) {
data[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4)
+ Character.digit(s.charAt(i+1), 16));
}
return data;
}
接收数据为:
Socket skt = new Socket("localhost", 1234);
BufferedReader in = new BufferedReader(new
InputStreamReader(skt.getInputStream()));
while (!in.ready()) {}
while (in.ready()) {
System.out.println(in.read()); // Read one line and output it
}
但是,我没有收到一个正常递增的数字列表,而是得到了一些随心所欲地增加和减少的东西:
121
196
234
244
246
245
250
249
251
252
8224
176
162
我哪里做错了?
【问题讨论】:
-
你试过把它读入一个字节[]?因为 8224 显然不适合一个字节