读书人

Indy10中如何把一个结构体数据用IdTCP

发布时间: 2012-03-15 11:50:39 作者: rapoo

Indy10中怎么把一个结构体数据用IdTCPClient发给IdTCPServer?

C/C++ code
struct TMyData{ int CMD; AnsiString MD5; bool HavingStream; int StreamSize;};TMyData *Data=new TMyData[1];Data->CMD=1;Data->MD5="202CB962AC59075B964B07152D234B70";Data->HavingStream=true;Data->StreamSize=1024524;


怎么把这个结构体发给服务端?服务端接收到后又怎么还原呢?

[解决办法]
直接writebuffer(Data, sizeof(Data));

http://topic.csdn.net/u/20090301/20/c6c8bdb3-527c-4b59-b847-ac00fbf3f065.html
[解决办法]
通过Stream中转,用Write方法发送。接收时用ReadStream

另外,结构体中,最好用字符数组,如:
struct TMyData
{
int CMD;
TCHAR MD5[33];
bool HavingStream;
int StreamSize;
};

[解决办法]
探讨
另外,sizeof(Data) 不知道为什么一直为4。

[解决办法]
因为发送的都是以字节开势出去的,到网络上都是二进制的,
char buffer[1024]={0};
TMyData aa;
memcpy(buffer,&aa,sizeof(aa));
然后把buffer发出去

服务器端接收后数据先存放在buf里,
然后TMyData bb;
memcpy(&bb,buf,sizeof(bb));

这样就还原了

读书人网 >C++ Builder

热点推荐