C++Builder 程序员博客
4 Jul
我定义了一个结构体
struct GMMessage
{
int MsPGID;
int GMemberID[50];
int GMemberCount;
};
在发送端的语句是:
GMMessage *GMember = new GMMessage();
…
… //给GMember的成员赋值
ClientSocket1->Socket->SendBuf(GMember,sizeof(GMember));
请问在接收端应该用怎样的语句才能接收到这个数据,并读取出原来的GMember的各个成员变量的值?
应该可以的。通过分析数据。来做比较好噢
能不能给段接收端实现接收的具体代码呀?十分感谢~
该回复于2008-07-03 18:33:52被版主删除
那可以这么定义
struct Info1{
…
};
struct Info2{
…
};
struct GMMessage{
BYTE Type;
union{
Info1 info1;
Info2 info2;
}
};
收到数据 更具Type的值.把Type后面的数据做强制转换赋值给相应类型的指针做处理;
假设 ServerSocket 端 收到数据 Socket->RecvBuffer(buf,Socket->ReceiveLength());
Info1 *p1;
Info2 *p2;
BYTE * pType = buf;
switch(*pType)
{
case X:
p1 = (Info1 *)(pType ++);
break;
case Y:
p2 = (Info2 *)(pType ++);
break;
}
p1 p2 就是数据的指针.
BYTE * pType = (BYTE*)buf; 这里也需要做下强制转换.
学习 。。
定义一个char变量也可以,但是我觉得最好是定义一个枚举类型的变量~!
根据是什么类型的数据,就做响应的处理
用一个switch语句来判断,先把你的数据包头取出来,判断是不是你要的数据、是哪种数据
然后对数据进行分析
GMMessage *GMemberRev = new GMMessage();
ServerSocket1->Socket->receiveBuf( GMemberRev , sizeof( GMMessage ) );
当然端口、Ip那些要设置好了~!