gpt4 book ai didi

C++从套接字中读取一个字符串,该字符串在结束之前包含空字符

转载 作者:行者123 更新时间:2023-11-28 05:08:33 25 4
gpt4 key购买 nike

我有一个套接字服务器(用c++写的)接收tcp消息,这些消息是已经被压缩的数据。

由于通缩(压缩)方法,这些消息可能包含“空”(0) 字符。

数据的示例表示(将字符转换为 int 并用逗号分隔):

141, 208, 59, 10, 128, 80, 12, 68, 209, 222, 197, 72, 94, 94, 190, 100, 55, 246, 86, 238, 31, 212, 82, 81, 50, 76, 49, 205, 169, 238, 182, 31, 75, 114, 13, 73, 37, 158, 162, 90, 170, 171, 120, 90, 197, 117, 164, 81, 116, 239, 97, 162, 55, 54, 0, 35, 128, 241, 222, 56, 1, 102, 2, 198, 0, 147, 189, 9, 6, 12, 208, 57, 128, 206, 249, 238, 236, 31, 70, 0, 227, 173, 81, 34, 192, 76, 192, 24, 96, 178, 55, 131, 127, 204, 9, 0

正如您在上面的示例中看到的,“null”(0) 表示在实际结束之前。

所以在使用时:

message_size = read( client, buffer, 4096 )

读取在第一个“null”(0)处返回。

是否可以继续阅读以便我收到完整的消息?

或者这里有什么魔术?

编辑:使用 Linux Centos (2.6.32-642.6.2.el6.x86_64)

最佳答案

鉴于 read() 函数不关心 NUL 字符,在我看来您可能将缓冲区传递给使用 NUL 的原始 C 标准字符串函数之一终止的字符串。

C++ std::string 没有这个限制。

关于C++从套接字中读取一个字符串,该字符串在结束之前包含空字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44024983/

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