首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

Indy10中如何把一个结构体数据用IdTCPClient发给IdTCPServer

2012-03-15 
Indy10中怎么把一个结构体数据用IdTCPClient发给IdTCPServer?C/C++ codestruct TMyData{ int CMD AnsiStr

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));

这样就还原了

热点排行