在java中通过套接字流接收错误的字节值

时间:2011-10-17 17:27:10

标签: java sockets stream bytearray byte

我尝试将文件作为字节数组读取并通过网络套接字连接发送, 我在从文件读取之后(在发送之前)打印了字节的值,并在从socket接收后打印了字节值...它是不同的!收到错误的值,我不知道为什么

发送前的样本字节: 21, 0, 52, 0 接收后的样本字节: -8, -1, -4, -1

我使用write(byte [] b)发送了字节;的OutputStream类 和read(byte [] b,int off,int len)接收的字节数;的InputStream类。

任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:1)

你可以尝试

ServerSocket ss = new ServerSocket(0);
Socket c = new Socket("localhost", ss.getLocalPort());

byte[] bytes = {21, 0, 52, 0};
c.getOutputStream().write(bytes);
c.close();

byte[] bytes2 = new byte[4];
Socket s = ss.accept();
ss.close();

new DataInputStream(s.getInputStream()).readFully(bytes2);
System.out.println(Arrays.toString(bytes2));
s.close();

打印

[21, 0, 52, 0]

答案 1 :(得分:0)

小心处理字节和字符是可以互换的。字节已签名!