我在c ++中实现tcp / ip服务。发生的情况是服务器将接收数据,每个数据可能包含一条或多条消息。服务器只允许每轮接收最多100个字节的数据。因此,在方案1中,如果消息是120字节,则将其拆分为2个数据。所以我创建一个全局静态char tmpbuffer [100]临时。收到数据后,我检查msg标题的总消息大小。如果超过100个字节,我将前100个字节存储到tmpbuffer中。它将等待第二个循环,其中下一个100字节的数据将来。这100个字节将包含剩余的20个字节,我想连接到tmpbuffer。
然而,这里的问题是tmpbuffer大小动态增加。我们假设这个函数将满足大于120字节的消息。它可以是1000字节,因此消息将被分成10个数据,每个数据为100个字节。通过仅使用char,我可以动态增加tmpbuffer大小吗?这意味着我设定的, static tmpbuffer [100]。在函数中,一旦我知道msg头的总消息大小,我该如何增加tmpbuffer大小。
答案 0 :(得分:4)
请改用std::vector
。拯救你太麻烦了。
答案 1 :(得分:1)
如果您想使用原始数组(无论出于何种原因),为什么不声明char* tmpbuffer
,然后使用new char[size]
分配尽可能大的字符数组?由于您显然不在多线程环境中,如果所需的大小增加,您应该free[]
tmpbuffer
{{1}}并将其再次创建为更大的数组。
答案 2 :(得分:0)
您无法增加静态分配的数组的大小。您必须使用std::vector<char>
并使用它的resize()函数将其大小增加到您需要的大小。
答案 3 :(得分:-1)
你也可以在这里使用std:string
并继续追加该字符串。