gpt4 book ai didi

java - 通过套接字传输 byte[]

转载 作者:行者123 更新时间:2023-12-01 11:44:20 26 4
gpt4 key购买 nike

我有一个必须发送到服务器的字节数组。

byte[] b=new byte[]{(byte)0xFE,0x01,0x01,0x32,0x00,0x00,(byte)0xFD};

我的发送客户端代码是

PrintStream pw=new PrintStream(s.getOuputStream());
pw.Println(b);

我的接收服务器代码是

InputStreamReader in=new InputStreamreader();
BufferedReader br=new BufferedReader(in);
String s=br.readline();
System.out.println("client sent :" + s);

当服务器接收并打印输出时,我得到的输出为客户端发送:[B@1f4917a7

我希望输出与发送的内容相同:FE 01 01 32 00 00 FD

最佳答案

我有几点你应该知道。

  • 不要将二进制文件作为文本发送。它不是文本,以这种方式发送二进制文件很可能会被破坏。
  • byte[].toString() 已经脑死亡了。不要使用它,它只会让你感到困惑。相反,如果你想打印它,你需要 Arrays.toString(bytes)

我建议你尝试一下

DataOutputStream out = new DataOutputStream(s.getOuputStream());
out.writeInt(b.length);
out.write(b);

在阅读端

DataInputStream in = new DataInputStream(s.getInputStream());
int len = in.readInt();
byte[] bytes = new byte[len];
in.readFully(bytes);
System.out.println("Client sent: " + Arrays.toString(bytes));

这应该打印

Client sent: [ -2, 1, 1, 50, 0, 0, -3 ]

这是相同的数据,十进制的有符号字节值。您可以根据自己的喜好格式化它。

关于java - 通过套接字传输 byte[],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29273552/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com