0

如果我有一个只有重复字符串的定义,我可以通过 get_packed_size 调用找到打包缓冲区的长度。但是,如果我在交换的接收方,我怎么知道要读取多少字节才能形成一条完整的消息?(由于条目的数量可变,因此不知道先验。)

发件人:

length = <name>_get_packed_size(&message)
buffer = malloc(length)
<name>_pack(&message, buffer)
write(fd, buffer, length)

接收者:

read(fd, buffer, ???)       // what is '???' if 'fd' is a stream socket?

如果我处于数据报模式,我可以读取 64K 字节之类的内容,然后获取整个消息。但是,如果我处于流模式,如何在不简短更改消息或阅读下一条消息的一部分的情况下执行此操作?

4

1 回答 1

1

有关此常见问题的典型解决方案,请参阅此答案:https ://stackoverflow.com/a/5586945/618259

于 2012-05-17T04:58:11.413 回答