结构体定义:
typedef struct PriceChangeVar
{
int varNum; //产品编号
float varPrice; //监控价格
int changeMark; //监控标志
}PriceCV;
//客户信息结构体
typedef struct CilentInformation
{
PriceCV MemPriceCV[10]; //价格需求定制结构体
SYSTEMTIME loginTime; //上线时间
LONGLONG TelephoneNum; //手机号码
ULONG MemIp; //IP地址
ULONG MesageCount; //已发信息数量
wchar_t MemName[512]; //会员名称
int state; //客户请求的状态
int MemType; //会员等级
SOCKET serConn; //服务器accpet链接客户端的套接字
}Cinfo;
服务端代码:
Cinfo t_cinfo;
int rret = recv(((Cinfo*)lpPrama)->serConn,(char *)&t_cinfo,sizeof(Cinfo),0);
//接收到的信息,已经有用户名、会员等级、价格需求结构体、客户状态、手机号码,
//需要补充IP、套接字接口、发送时间
wchar_t *t_name = t_cinfo.MemName;
int t_type = t_cinfo.MemType;
LONGLONG t_tele = t_cinfo.TelephoneNum;
int state_temp = t_cinfo.state;
客户端代码:
int sret = JSocket::ConnectSocket(LOCALHOST_IP,6000);
Cinfo info;
memset(&info,0,sizeof(Cinfo));
wcscpy(info.MemName,JGlobal::GetUserName().GetBuffer(0));
info.MemType = JGlobal::GetUserType();
info.state = STATE_LOGIN;
info.TelephoneNum = (LONGLONG)12345678910;
sret = JSocket::SendVipInformation((char*)&info,sizeof(Cinfo));
客户端和服务端发送接受都是成功的,返回值与结构体的size一致,发送时赋值也OK,现在就是接受之后结构体内部所有值为0,求有经验的前辈指点
sret = JSocket::SendVipInformation((char*)&info,sizeof(Cinfo));
不能这么写
char会丢弃0之后的数据
JSocket怎么实现的?应该直接传二进制数据
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。