我有一个多线程程序java java socket,并且收到了信息bizare。像这样¤¤¤¤¤¤23456718900263678722¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
public void run()
{
try {
byte[] bs = new byte[64];
// read data into buffer
dataReception.read(bs);
// for each byte in the buffer
for (byte b:bs)
{
// convert byte into character
char c = (char)b;
// print the character
System.out.print(c);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
我有一个多线程程序java java socket,并且收到了信息bizare。像这样的¤¤¤¤¤¤23456718900263678722¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤ run(){...
问题在这里:
如果您期望正好是64个字节,请使用readFully()
而不是read(),
,或者至少要注意其返回值。
尝试:
DataInputStream通常在需要通过套接字共享文本信息时使用。如果从另一端使用DataOutputStream.writeUTF(String str)发送传输的数据,请使用DataInputStream.readUTF()方法。在发送实际数据之前,DataInputStream和DataOutputStream发送两个字节(无符号)长度的数据。