gpt4 book ai didi

Java:接收平台无关的TCP流

转载 作者:行者123 更新时间:2023-12-02 06:58:05 25 4
gpt4 key购买 nike

我想构建一个接受完全独立于平台的 TCP 流的 Java 服务器,以便客户端可以用任何其他语言(如 C++、PHP、ActionScript 或其他语言)编写。

但是,当我想向流中写入不同的原语(如 int、short 等)时,我必须注意正确的整数长度以及整数是有符号还是无符号。这是一个问题,因为整数字节长度在不同平台上变化很大,例如PHP 整数在 32 位和 64 位机器上具有不同的大小。

因此,仅发送文本而不发送整数值可能是合理的,因为如果文本使用相同的字符集和字节顺序,则每台机器都会以相同的方式解释文本。因此,如果服务器应该读取与平台无关的数据,则只能使用 DataInputStream.readUTF()。

我不确定我的论点是否正确,但如果我错了,请纠正我。

最佳答案

虽然您可以发送文本,但不应使用 writeUTF/readUTF,因为这是一种特定格式。即无符号 short 长度后跟 UTF 字符。

可以使用文本的原因是因为您希望一次解析每个字节,您可以使用二进制执行完全相同的操作(并且通常要快得多)

最大的区别是文本更容易阅读和调试。仅出于这个原因,我建议您将第一个协议(protocol)基于文本。我只建议当您更有信心可以调试协议(protocol)错误时使用二进制协议(protocol)。

关于Java:接收平台无关的TCP流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17042731/

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