zelda

 

Symbian进程间通信

Symbian进程间通信

通常我们都会用到CS结构来处理一些项目,这样不可避免的就会用上进程通信了.
SYMBIAN平台UI进程之间的通讯已经有很多现成代码了.如果后台EXE进程通信如何
是好.下面介绍一种通信方式.无论后台进程还是UI都可以使用的完美解决方案.

让我们来看代码:
1.Server
void CP2PServer::ConstructL()
    {
    //创建
    iMsgQueue.CreateGlobal(KGLobalName, KNumberOfSlots, KMessageLength, EOwnerProcess);    
    CActiveScheduler::Add( this); // Add to scheduler

    iMsgQueue.NotifyDataAvailable( iStatus );//开始监听消息
    SetActive(); // Tell scheduler a request is active
    }


void CP2PServer::RunL()
    {
    if (iStatus.Int() == KErrNone)
        {
        //接收数据
        TRAPD(error,iMsgQueue.Receive( &str_SendData, KMessageLength));
        if(error==KErrNone)
            {
            iObserver->HandleMessageReceiveL(str_SendData.DataBuf.Left

(str_SendData.DataLength));
            }
        }
    }


2.Client
void CP2PClient::ConstructL()
    {
    //创建
    iMsgQueue.OpenGlobal(KGLobalName, EOwnerProcess);
    }

    //发送消息
void CP2PClient::SendMessageL(const TDesC8& aSendMessage)
    {
    STR_SENDDATA temp;
    temp.DataLength = aSendMessage.Length();
    temp.DataBuf.Copy(aSendMessage);
    iMsgQueue.Send(&temp, KMessageLength);
    }


以上代码己在N73/E71/N95/5800/N70上测试通过了.

posted on 2010-09-19 17:00  zelda  阅读(359)  评论(0编辑  收藏  举报

导航