欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

symbian socket 有底组的结构 传输

更新时间: 2014-01-05 02:40:45 责任编辑: Author_N1

 

symbian Socket 有数组的结构 传输
传输数据结构为:

struct CMD_GP_Logon
{
    TInt username;
    TInt pwd;
};


客户端:
//创建数据
CMD_GP_Logon gpInfo;
gpInfo.username = 123456;
gpInfo.pwd = 856001;

//传输数据
TInt size = sizeof(gpInfo);
result = m_UserLogon->SendData(gpInfo, size);

SendData方法
//数据转换
TPtr8 ptr(REINTERPRET_CAST(TUint8*,&gpInfo), size);
//发送数据
iEngine->WriteL(ptr);

服务端:
   
public struct CMD_GP_Logon
    {
        public int dwPlazaVersion;                
        public int username;
        public int pwd;
    };

Socket接受的数据 保存在 pBuffer中
//数据转换
CMD_GP_Logon GpLogon = (CMD_GP_Logon)SocketStruct.BytesToStuct(pBuffer, typeof(CMD_GP_Logon));

这样是成功的.. 可以正确传递接受
但如果结构 中有数组 
struct CMD_GP_Logon
{
     Byte szAccounts[NAME_LEN];
     Byte szPassWord[PASS_LEN];
};


TBuf<NAME_LEN> userName = iLoginContainer->GetUserName();
TBuf<PASS_LEN> pwd = iLoginContainer->GetPwd();

CMD_GP_Logon gpInfo;
memcpy(gpInfo.szAccounts, &userName, CountArray(gpInfo.szAccounts));
memcpy(gpInfo.szPassWord, &pwd, CountArray(gpInfo.szPassWord));

//传输数据
TInt size = sizeof(gpInfo);
result = m_UserLogon->SendData(gpInfo, size);

SendData方法
//数据转换
TPtr8 ptr(REINTERPRET_CAST(TUint8*,&gpInfo), size);
//发送数据
iEngine->WriteL(ptr);

服务端:
    public struct CMD_GP_Logon
    {
        public int dwPlazaVersion;                
        public string szAccounts;                   
     public string szPassWord;        
  };

Socket接受的数据 保存在 pBuffer中
//数据转换
CMD_GP_Logon GpLogon = (CMD_GP_Logon)SocketStruct.BytesToStuct(pBuffer, typeof(CMD_GP_Logon)); 

这行报错 错误为 尝试读取或写入受保护的内存。这通常指示其他内存已损坏。服务端这边为何转换失败?  数据接受没问题。

--参考方法--
给服务端数据结构填写相同的值,调用SocketStruct.StructToBytes生成的值与客户端接收到的内容做比对,看是否相符
--参考方法--
谢谢楼上的朋友指点,不过这种方法还是无法测试准确。
--参考方法--
我的意思是,如果二者不能匹配的话,说明数据编排有问题。其实,你自己定义一个数据编排规则,只要客户端、服务端都遵守就行。
--参考方法--
这就是协议
网络数据就是一长串,
怎么解析就是协议。
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:40:45
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/13046/
本文WWW.DOC100.NET DOC100.NET版权所有。