1.socket连接,收到的字节流打印出来和服务器发出来的不一样,只有一个字节不一样
原来我是这么写的
public byte[] recvMsgBytes() { String line = null;
StringBuffer sb = new StringBuffer();
try { BufferedReader d = new BufferedReader(new InputStreamReader(socket .getInputStream()));
while ((line = d.readLine()) != null) {
// 把每一行加到sb后
sb.append(line); }
b=null;
d.close(); } catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} if (sb.length() == 0) {
return null;
} return sb.toString().getBytes(); }结果字节流不对
发出:-41 -81 -41 -65 -56 -69
收到:-41 -81 -41 -65 -56 63我以为是String的问题,换用InputStreamReader 和sun.io.CharToByteConverter
......
InputStreamReader d = new InputStreamReader(socket
.getInputStream());
while (!d.ready()) {
Thread.sleep(500);
} int i; CharToByteConverter converter=CharToByteConverter.getDefault();
char[] c = new char[512];
d.read(c);
byte[] b = new byte[512];
b=converter.convertAll(c);
System.out.println("length"+b.length+" "+c.length); sb.append(b);
d.close();
问题还是一样,而且length显示 b.length=219 c.length=512
不知道为啥2.在后面用new String(byte[] temp)保存字节数组
fp.setName_cn(new String(temp));
for(int i=0;i<temp.length;i++){
System.out.print(temp[i]+" ");
}
System.out.println(" ");
temp = fp.getName_cn().getBytes();
for(int i=0;i<temp.length;i++){
System.out.print(temp[i]+" ");
}
System.out.println(" ");
通过String转换一下后,字节又变了
原来是:-41 -81 -41 -65 -56 63
后来是:-41 -81 -41 -65 63 63
谁能给解释一下?尤其是第一个,怎么会收到的字节流不一样了呢,我做了些省略了,程
序一共接收一百多个字节,只有一个是错的,怎么回事呢?
谢谢
原来我是这么写的
public byte[] recvMsgBytes() { String line = null;
StringBuffer sb = new StringBuffer();
try { BufferedReader d = new BufferedReader(new InputStreamReader(socket .getInputStream()));
while ((line = d.readLine()) != null) {
// 把每一行加到sb后
sb.append(line); }
b=null;
d.close(); } catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} if (sb.length() == 0) {
return null;
} return sb.toString().getBytes(); }结果字节流不对
发出:-41 -81 -41 -65 -56 -69
收到:-41 -81 -41 -65 -56 63我以为是String的问题,换用InputStreamReader 和sun.io.CharToByteConverter
......
InputStreamReader d = new InputStreamReader(socket
.getInputStream());
while (!d.ready()) {
Thread.sleep(500);
} int i; CharToByteConverter converter=CharToByteConverter.getDefault();
char[] c = new char[512];
d.read(c);
byte[] b = new byte[512];
b=converter.convertAll(c);
System.out.println("length"+b.length+" "+c.length); sb.append(b);
d.close();
问题还是一样,而且length显示 b.length=219 c.length=512
不知道为啥2.在后面用new String(byte[] temp)保存字节数组
fp.setName_cn(new String(temp));
for(int i=0;i<temp.length;i++){
System.out.print(temp[i]+" ");
}
System.out.println(" ");
temp = fp.getName_cn().getBytes();
for(int i=0;i<temp.length;i++){
System.out.print(temp[i]+" ");
}
System.out.println(" ");
通过String转换一下后,字节又变了
原来是:-41 -81 -41 -65 -56 63
后来是:-41 -81 -41 -65 63 63
谁能给解释一下?尤其是第一个,怎么会收到的字节流不一样了呢,我做了些省略了,程
序一共接收一百多个字节,只有一个是错的,怎么回事呢?
谢谢
问题还是一样,而且length显示 b.length=219 c.length=512
~~~~是512
这里面文章怎么编辑呢?