开发者社区> 问答> 正文

socket传输结构体,c++,发送OK,recv返回字节大小正确但接受数据为空

结构体定义:
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,求有经验的前辈指点

展开
收起
a123456678 2016-03-23 14:00:48 3578 0
1 条回答
写回答
取消 提交回答
  • sret = JSocket::SendVipInformation((char*)&info,sizeof(Cinfo));
    不能这么写
    char会丢弃0之后的数据

    JSocket怎么实现的?应该直接传二进制数据

    2019-07-17 19:10:53
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
对象的生命期管理 立即下载
继承与功能组合 立即下载
移动与复制 立即下载