gpt4 book ai didi

Java实现htonl

转载 作者:搜寻专家 更新时间:2023-10-31 08:18:25 26 4
gpt4 key购买 nike

我正在与服务器通信,发送到服务器的每条消息都必须用消息的长度填充,

unsigned int len = htonl(msg.size());

在 C 中通过 htonl 运行长度并填充消息有效,在 Java 中 AFAIK 字节顺序已经在网络顺序中所以我假设我所要做的就是在消息之前写入字符串长度流,但这不起作用,我错过了什么吗?

stream.write(msg.length());
stream.write(msg.getBytes());

Stream 是一个 OutputStream

最佳答案

int htonl(int value) {
return ByteBuffer.allocate(4).putInt(value)
.order(ByteOrder.nativeOrder()).getInt(0);
}

或者

int htonl(int value) {
if (ByteOrder.nativeOrder().equals(ByteOrder.BIG_ENDIAN) {
return value;
}
return Integer.reverseBytes(value);
}

关于Java实现htonl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2675957/

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