当前位置: 代码迷 >> Symbian >> 客户-服务器通信有关问题(急子藤大哥,)
  详细解决方案

客户-服务器通信有关问题(急子藤大哥,)

热度:3301   发布时间:2013-02-26 00:00:00.0
客户-服务器通信问题(急,子藤大哥,救命啊!)
我的服务器向客户发数据,为什么有时候客户可以收到,而有时候客户却异常退出?我跟了一下断点,问题在iMessage.WriteL这里,异常退出代码为-38,错误的描述符,晕了。
我的疑问是既然问题出在iMessage.WriteL这里,但是为什么不是每次都退出,而且是随机的,(发数据)有时候时间长,有时候时间短。  
下面是客户-服务器通信的部份代码:
//CLIENT:
void   RServerSession::RequestStateData(   TStateMsg&   aStateMsg,   TRequestStatus&   aStatus   )
{
TAny*   messageParameters[KMaxMessageArguments];

TPckg <TStateMsg>   StateMsg(   aStateMsg   );
messageParameters[0]   =   (TAny*)&StateMsg;  
        SendReceive(   ECyberWallServRequstState,   messageParameters,   aStatus   );

}
//SERVER:
void   CCyberWallServerSession::SendStateMsgToClient()
{

if(iWaitingForTick)
{
iWaitingForTick   =   EFalse;


iServer.GetStateMsg(iMyMsg);

TPckg <TStateMsg>   hand_mymsg(iMyMsg);

TRAPD(err,   iMessage.WriteL(iMessage.Ptr0(),hand_mymsg));
if(err)
{
PanicClient(EBadDescriptor);

}
     
iMessage.Complete(ECyberWallServRequestComplete);
}
}
问题就出在iMessage.WriteL(iMessage.Ptr0(),hand_mymsg)这句,我跟断点,异常退出代码为-38---错误的描述符,不知道怎么回事。如果是错误的描述符,为什么一开始不出问题,而是一段时间后。
//TStateMsg
struct   TStateMsg
{
TInt AllSize   ;
TInt Count   ;
TInt DenyCount   ;
TInt         FlowOver   ;             };
求达人解惑啊,都困扰我好久了,子藤大哥,救命啊。

------解决方案--------------------------------------------------------
TPtr8 ptr(reinterpret_cast <TUint8*> (&time), sizeof(time), sizeof(time));
TRAPD(leave, iMessage.WriteL(iMessage.Ptr0(), ptr));用这种方式试试.
  相关解决方案