【发布时间】:2014-03-24 18:36:53
【问题描述】:
在套接字通信中使用动态缓冲区大小是个好主意还是坏主意?
例如: 我有一个消息格式 [2 个字节:以下消息的长度][消息]
所以缓冲区大小将为 message.length+2。 在接收端,我可以捕获前两个字节,然后我知道我还需要捕获多少个字节。
这是个好主意还是坏主意 - 为什么?
【问题讨论】:
在套接字通信中使用动态缓冲区大小是个好主意还是坏主意?
例如: 我有一个消息格式 [2 个字节:以下消息的长度][消息]
所以缓冲区大小将为 message.length+2。 在接收端,我可以捕获前两个字节,然后我知道我还需要捕获多少个字节。
这是个好主意还是坏主意 - 为什么?
【问题讨论】:
首先,提出数据结构总是更好的,它将用于通过套接字进行通信。您在哪里定义消息类型、消息大小和实际消息的占位符。
在编写此类结构之前,请记住以下几点:
大小利用率。
支持跨平台,以避免字节顺序问题。
这是可扩展的吗?
【讨论】:
这只是不必要的。有 read() 方法可以定义缓冲区的偏移量和最大读取长度,还有很多其他地方可以在 API 中使用 byte[] 数组、偏移量和长度。您不需要分配大小正好合适的缓冲区。
【讨论】:
它不是坏也不是好,但它的选择问题是使用您在套接字编程中分离消息的方式,还是使用分隔符或使用固定大小的消息。有时它依赖于用例。
【讨论】: