gpt4 book ai didi

java 套接字 writeUTF() 和 readUTF()

转载 作者:搜寻专家 更新时间:2023-10-30 21:16:51 29 4
gpt4 key购买 nike

我一直在阅读一些 Java 套接字代码片段并发现一个事实,即在套接字通信中,要按顺序发送消息,您不必手动将它们分开,编写器/读取器流会自动执行这些操作你。这是一个例子:

writer.java
writeUTF("Hello");
writeUTF("World");


reader.java
String a=readUTF(); // a=Hello
String a=readUTF(); // b=World

我试过这个代码片段,它工作正常。但是,我想知道这种编码风格是否应该工作正常。在没有明确分隔每个段的情况下按顺序使用套接字流是否有任何潜在风险?

最佳答案

writeUTF()readUTF() 写入字符串的长度(以字节为单位,当编码为 UTF-8 时)后跟数据,并使用modified UTF-8编码。所以有一些潜在的问题:

  • 可以通过这种方式处理的字符串的最大长度对于纯 ASCII 是 65535,如果您使用非 ASCII 字符则更少 - 在这种情况下您无法轻易预测限制,除非保守地假设每个字符 3 个字节。因此,如果您确定发送的字符串永远不会超过 20k,就没问题。
  • 如果应用需要与其他东西(不是用 Java 编写的)通信,另一端可能很难处理修改后的 UTF-8。不过,对于应用程序内部通信,您不必担心。

关于java 套接字 writeUTF() 和 readUTF(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4009157/

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