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

一个socket通讯有关问题,多结构传输有关问题

2013-12-13 
一个socket通讯问题,多结构传输问题我之前做socket客户端和服务端通信时两边是用的一个结构体,用struct A

一个socket通讯问题,多结构传输问题
我之前做socket客户端和服务端通信时两边是用的一个结构体,用struct A来表示吧,client端和server端互相发送数据时结构体是一样的,现在有个问题,server端能否在发送A的同时后面跟着B结构体的数据一起发过来呢,client端先收A再解析B结构体,这种思路该如何解决呢?

写段伪代码表达一下思路:

server端:

struct A
{
   int a;
   int b;
}pa;

struct B
{
   char a[100];
   char b[100];
}pb;

pa.a =1;
pa.b =2;
pb.a = "abc";
pb.b = "bcd";

发送时将四个值放在一个string中都发过去,在client端先用结构体A接收数据,然后再将结构体B解析出来,关键是后面怎么把结构体A和B解析出来啊,不知道我表达的意思清除了没有,求各位给个思路吧
[解决办法]

引用:
非常感谢楼上的回复,这是发送的代码,怎么收呢?
//recv buf...
A* pa = (A*)buf;
// use pa ...
B* pb = (B*)(buf+sizeof(A));
// use pb...
我认为通讯最好是基于‘协议’的,而不要基于数据结构,这样才能做到机器无关
[解决办法]
引用:
再弱弱的问一句,前人的代码是这样写的
int iRec = aSocket.ReceiveFrom(&realorrev, sizeof(REALOR_SHAKEHANDS),strIp,port);

收的时候用的不是buf是用的A类型的结构体,realorrev是结构体的对象,这样的话发的时候是A+B结构,但是收的时候用的是A结构体接收的,这似乎不对吧

只是一个地址而已!这样也可以,取B结构体信息的时候,偏移A结构体大小就好!
实际开发的时候还是用buf比较靠谱,上面那种写法比较误导人
[解决办法]
重新写解析函数,解析时需要与发送时相对应的,可以自己规定发送与解析时的机制
[解决办法]
XML

热点排行