gpt4 book ai didi

c++ - 通过 tcp 构造 char*

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

我有这个结构:

typedef struct pkt {    
unsigned int pktid;
unsigned int pkt_leng;
unsigned int strleng;
char* str;
};

在我的代码中我这样做:

mystring = someFunctionWhoReturnString();

pkt* mypkt = (pkt*) malloc(sizeof(pkt));

mypkt -> pkt = htonl(C_MYPKT);
mypkt -> pkt_leng = htonl(sizeof(pkt));
mpykt -> strleng = htonl(mystring.lengh());

mypkt -> str = (char*)malloc(mystring.length());
strcpy(mypkt -> str, mystring.c_str(), mystring.length());

在此之后,如果我检查存储在 mypkt->str 上的内容,字符串就在那里。

但是当我收到 pkt 时,我得到的只是一些垃圾(大小合适),应该在其中获取 char*(数据包中的其余数据正常到达)。

有一些聪明的方法可以在不使用静态大小的 char[] 的情况下完成这个任务吗?

我正在使用 VC++ 2010。

最佳答案

意识到sizeof(pkt) == 12,三个整数和一个指针的大小。它不包括指针指向的数据的长度。您要发送的是三个整数和字符串在发送机器上的地址 - 当然,这个地址对接收机器完全没用。

相反,您需要准备一个 FlatBuffers ,其中包含三个紧跟字符数据的整数。

关于c++ - 通过 tcp 构造 char*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19738273/

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