gpt4 book ai didi

java - 从服务器读取 byte[]

转载 作者:行者123 更新时间:2023-12-02 00:24:11 24 4
gpt4 key购买 nike

我正在尝试读取从客户端发送到服务器的byte[]

这是我的客户端代码...

 din = new DataInputStream(socket.getInputStream());
dout = new DataOutputStream(socket.getOutputStream());

Cipher cipher = Cipher.getInstance("RSA");
// encrypt the aeskey using the public key
cipher.init(Cipher.ENCRYPT_MODE, pk);

byte[] cipherText = cipher.doFinal(aesKey.getEncoded());
dout.write(cipherText);

这是我的服务器代码...

 DataInputStream dis = new DataInputStream(socket.getInputStream());          
DataOutputStream dos = new DataOutputStream(socket.getOutputStream());

String chiper = dis.readUTF();
System.out.println(chiper);

但是,dis.readUTF(); 行失败并出现异常...

java.io.EOFException at java.io.DataInputStream.readFully(DataInputStream.java:197)
at java.io.DataInputStream.readUTF(DataInputStream.java:609)
at java.io.DataInputStream.readUTF(DataInputStream.java:564)
at gameserver.ClientHandler.run(GameServer.java:65)

有人可以帮我理解为什么这不起作用吗?

最佳答案

对于初学者来说,如果您在一端写入一系列(加密!)字节,并尝试在另一端读取 UTF 格式的字符串......您将会遇到麻烦。

我建议在客户端你应该做类似的事情

dout.writeInt(cipherText.length);
dout.write(cipherText);

然后在服务器端你应该做类似的事情

int byteLength = dis.readInt(); // now I know how many bytes to read
byte[] theBytes = new byte[byteLength];
dis.readFully(theBytes);

关于java - 从服务器读取 byte[],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10344132/

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