我正在编写一个客户端服务器模型应用程序,服务器在与客户端的流连接上以非常高的速率发送大量消息(不同大小),客户端在大于预期消息大小的缓冲区上读取这些消息
while (ret = read (sd, buf, sizeof buf) > 0)
{
// decode message here
}
这里的问题是客户端可能会像这样在缓冲区上读取多个消息,如果我假设缓冲区是 B 并且消息是 M#,它将收到如下消息
|----B----|----B----|----B----|----B----| ……
|-M1--|-M2-|--M3-|-M4-|---M5---|--M6-| ……
这使得消息的解码不正确。所以,我想接收如下消息(每个缓冲区只有一条消息)
|----B----|----B----|----B----|----B----| ……
|-M1--|,,|-M2-|,,,|--M3-|,,|-M4-| .... (,,, 什么都不是,只是为了格式化)
请注意,我必须使用流连接,并且我不喜欢在消息之间不使用任何分隔符