请看下面的程序:
客户端:
char[] ss = {0xaa, 0xab, 0xac, 0xad, 0xae};
Socket c_socket = new Socket(InetAddress.getLocalHost(), 1314);
DataOutputStream out = new DataOutputStream(c_socket.getOutputStream());
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(out));
writer.write(ss);
writer.close();
c_socket.close();
for(char c : ss) {
System.out.println((int)c);
}
服务端:
ServerSocket s_socket = new ServerSocket(1314);
Socket c_socket = s_socket.accept();
DataInputStream in = new DataInputStream(c_socket.getInputStream());
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
char[] buf = new char[20];
int len = reader.read(buf);
for(int i=0; i<len; i++) {
System.out.println((int)buf[i]);
}
reader.close();
c_socket.close();
s_socket.close();客户端和服务端的输出结果为什么不一样?
客户端输出170 171 172 173 174
服务端输出的都是64

解决方案 »

  1.   

    你客户端发送的是char,是整形,在服务端收到的是byte,减少了精度了
      

  2.   

    1楼说的对
    你最好把char[]数组转化成String 对象,用ObjectInputStream和ObjectOutputStream发过去就行了,
      

  3.   

    我以前就是把char[]转化为String对象后发送的,客户端和服务端输出的字符串是一样的,但是当我把这个String对象再转为char[]输出时,输出结果就不一样了,不知道为什么!大哥大姐帮帮忙吧!我先谢过了有环境的朋友有时间的话就帮小弟调一下吧
    我用的JDK版本是1.5
    操作系统是 vista