我正在尝试使用ByteBuf通过netty发送字符串。
首先,我将字符串转换为这样的字节数组:

byteBuf.writeInt(this.serverName.length());
byteBuf.writeInt(this.ipAdress.length());

byteBuf.writeBytes(this.serverName.getBytes(StandardCharsets.UTF_8));
byteBuf.writeBytes(this.ipAdress.getBytes(StandardCharsets.UTF_8));


这很好用,但是我不知道如何读取字节以将它们转换回字符串?

我尝试过这样的事情:

int snLen = byteBuf.readInt();
int ipLen = byteBuf.readInt();

byte[] bytes = new byte[byteBuf.readableBytes()];

System.out.println(byteBuf.readBytes(bytes).readByte());
this.ipAdress = "";


必须有一些东西可以恢复字节数。您可以从字符串发送字节,但不能在最后返回字节?似乎有一种解决方法,但是我不知道该怎么做。

希望您的任何人都能帮助我。
提前致谢! :)

最佳答案

在netty 4.1中,您可以使用:

byteBuf.writeCharSequence(...)
byteBuf.readCharSequence(...)

10-08 18:37