gpt4 book ai didi

java - 通过流进行二进制与字符串传输

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

我正在用 WebSockets 和 Java 做一个小实验。显然,根据 WebSocket 的最新草案,消息可以是二进制或纯字符串。我使用 Webbit 服务器,它有两个功能:

public void onMessage(WebSocketConnection connection, String message) 

public void onMessage(WebSocketConnection connection, byte[] message)

我想知道有什么不同。 byte[] 更快吗?或者为什么这很重要?我可以用字节写我写的所有东西,因为即使是一个字符串在传输时也被组合成字节,那么为什么我们有两个 multiple 方法?只有 Google Chrome 15 Beta 和 16 Dev 支持二进制传输,所以我想在客户端和服务器上使用 Base64 编码/解码。这是唯一的区别吗?如果我只是读取每个字节,将它们组合成一个字符串并发送它们呢?我认为,唯一的区别是并非所有字节都是字符串字符,所以我会在转换为字符串时增加开销吗?

tl;dr -> 二进制传输和字符串传输有什么区别?

最佳答案

WebSocket 协议(protocol) (HyBi) 支持两种不同的负载类型:文本、二进制。文本负载是 UTF-8 编码的字符串数据。您发送的字符串中任何超过 127 的 ASCII 代码都将被转换为两字节的 UTF-8 编码。要成功发送/接收原始二进制数据,您可能需要使用 base64(与 UTF-8 兼容)之类的方式对数据进行编码。

直接发送二进制负载类型。字节在有效负载中按原样发送。这样带宽效率更高。这意味着您不必执行编码/解码步骤。您发送的字节直接发送,您接收的字节无需解码即可直接访问。

关于java - 通过流进行二进制与字符串传输,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7730260/

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