首先,答案很大程度上取决于套接字的类型。
如果这是一个数据报套接字 (UDP),那么答案是否定的。仅从数据报套接字读取一个字节将导致您丢失重要信息。读取的大小应该(至少)对应于发送的大小。
假设这是一个蒸汽套接字(TCP),一次只读取一个字节没有语义上的损害。无论哪种方式,结果都是正确的。这并不是说这是一个好主意。每次调用都read需要切换到内核模式并执行一系列操作。无论您检索一字节的批次,这些成本都相同。因此,从性能角度来看,强烈建议您每次执行更大的读取。
解决你的困境的方法是使用缓冲 IO。创建或使用预先存在的适配器,该适配器将执行大型操作read以将数据放入用户空间缓冲区,然后您可以从该缓冲区中选择最适合您的块大小的字节。