C++ socket传送和接收结构体问题,求大神帮忙
答案:3 悬赏:30 手机版
解决时间 2021-01-15 00:52
- 提问者网友:玫瑰园
- 2021-01-14 03:16
C++ socket传送和接收结构体问题,求大神帮忙
最佳答案
- 五星知识达人网友:等灯
- 2021-01-14 04:23
在服务端也要定义这样的结构体
结构体:
struct SendPackage
{
char opcode[32];
char SendMessage[1024];
char ReturnMessage[1024];
char ReturnCode[2];
} ;
然后:
ReceiveLen=recv(p_NewSocket, // 新的套接字句柄
p_ReceiveBuffer, // 接收套接字的缓冲区
sizeof(struct SendPackage) , // 缓冲区的大小
0);
struct SendPackage *p_stu = (struct SendPackage*)p_ReceiveBuffer ;
cout << "sbusid=" << p_stu->SendMessage ;
但是看你前面的程序,好象有点问题吧:
strcpy(subs.p_subsid,"123456");//subs是CSubscriber的对象。
strcpy(SendBi.SendMessage,(char*)&subs); //肿么能将一个CSubscriber的对象拷贝到一个字符数组中去呢?
结构体:
struct SendPackage
{
char opcode[32];
char SendMessage[1024];
char ReturnMessage[1024];
char ReturnCode[2];
} ;
然后:
ReceiveLen=recv(p_NewSocket, // 新的套接字句柄
p_ReceiveBuffer, // 接收套接字的缓冲区
sizeof(struct SendPackage) , // 缓冲区的大小
0);
struct SendPackage *p_stu = (struct SendPackage*)p_ReceiveBuffer ;
cout << "sbusid=" << p_stu->SendMessage ;
但是看你前面的程序,好象有点问题吧:
strcpy(subs.p_subsid,"123456");//subs是CSubscriber的对象。
strcpy(SendBi.SendMessage,(char*)&subs); //肿么能将一个CSubscriber的对象拷贝到一个字符数组中去呢?
全部回答
- 1楼网友:行雁书
- 2021-01-14 05:45
int SendLength = send(p_ClientSocket,
(char*)&SendBi,
sizeof(SendPackage),
0);
(char*)&SendBi, 换为subs.p_subsid,大小换位 sizeof(subs.p_subsid)追问说白了,我是要传结构体而后去解析结构体。不是想传单纯的值
(char*)&SendBi,
sizeof(SendPackage),
0);
(char*)&SendBi, 换为subs.p_subsid,大小换位 sizeof(subs.p_subsid)追问说白了,我是要传结构体而后去解析结构体。不是想传单纯的值
- 2楼网友:玩家
- 2021-01-14 04:31
发送者: 把结构体对象 通过 序列化 变成二进制缓存,然后 传输这个缓存。
接受者: 把接受二进制缓存 通过序列化 再组建成结构体对象
这个是现在最通用的标准
建议你使用下boost::serialization
接受者: 把接受二进制缓存 通过序列化 再组建成结构体对象
这个是现在最通用的标准
建议你使用下boost::serialization
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯