我一直在阅读一些Java套接字代码片段,并且说明了在套接字通信中,为了按顺序发送消息,您不必手动分离它们,编写器/阅读器流会自动为您做事.这是一个例子:
writer.java
writeUTF("Hello");
writeUTF("World");
reader.java
String a=readUTF(); // a=Hello
String a=readUTF(); // b=World
Run Code Online (Sandbox Code Playgroud)
我已经尝试过这段代码片段并且工作正常.但是,我想知道这种编码风格是否应该正常工作.是否存在按顺序使用套接字流而不明确分隔每个分段的潜在风险?
根据文档,readUTF和writeUTF方法适用于 UTF8 的修改版本,该版本还添加了要在开头读取的字符的长度。
这应该意味着读取操作将等到获取足够的字符后才返回字符串。这意味着如果您没有看到它,它们实际上也是分段的,因为您只是用 和 装饰套接字的DataInputStream流DataOutputStream。
总之,是的,它应该非常安全,因为 API 本身会负责分离单个消息。