C++ socket传送和接收结构体问题,求大神帮忙 50
结构体:structSendPackage{charopcode[32];charSendMessage[1024];charReturnMessage[1024];ch...
结构体:
struct SendPackage
{
char opcode[32];
char SendMessage[1024];
char ReturnMessage[1024];
char ReturnCode[2];
};
类:
class CSubscriber
{
public:
CSubscriber(CSubscriber &subs);
CSubscriber();
virtual ~CSubscriber();
char p_subsid[20+1];
char p_custid[20+1];
char p_Acctid[20+1];
char p_Userid[20+1];
char p_ServerNum[20+1];
char p_Subsname[50+1];
char p_Status[50+1];
};
客户端代码:
SendPackage SendBi;//结构体
strcpy(subs.p_subsid,"123456");//subs是CSubscriber的对象。
strcpy(SendBi.SendMessage,(char*)&subs);
int SendLength = send(p_ClientSocket,
(char*)&SendBi,
sizeof(SendPackage),
0);
服务端代码:
ReceiveLen=recv(p_NewSocket, // 新的套接字句柄
p_ReceiveBuffer, // 接收套接字的缓冲区
2060, // 缓冲区的大小
0); // 标志为 0
得到的buffer是个结构体,我就想得到subs.p_subsid 展开
struct SendPackage
{
char opcode[32];
char SendMessage[1024];
char ReturnMessage[1024];
char ReturnCode[2];
};
类:
class CSubscriber
{
public:
CSubscriber(CSubscriber &subs);
CSubscriber();
virtual ~CSubscriber();
char p_subsid[20+1];
char p_custid[20+1];
char p_Acctid[20+1];
char p_Userid[20+1];
char p_ServerNum[20+1];
char p_Subsname[50+1];
char p_Status[50+1];
};
客户端代码:
SendPackage SendBi;//结构体
strcpy(subs.p_subsid,"123456");//subs是CSubscriber的对象。
strcpy(SendBi.SendMessage,(char*)&subs);
int SendLength = send(p_ClientSocket,
(char*)&SendBi,
sizeof(SendPackage),
0);
服务端代码:
ReceiveLen=recv(p_NewSocket, // 新的套接字句柄
p_ReceiveBuffer, // 接收套接字的缓冲区
2060, // 缓冲区的大小
0); // 标志为 0
得到的buffer是个结构体,我就想得到subs.p_subsid 展开
3个回答
展开全部
在服务端也要定义这样的结构体
结构体:
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的对象拷贝到一个字符数组中去呢?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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)
追问
说白了,我是要传结构体而后去解析结构体。不是想传单纯的值
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询