symbian 短信socket监听问题代码分析

lgqing66 2010-05-24 05:00:13
//通过监听短信接受套接字,在socket处实现拦截接受短信,可是出现了一下两个问题,请侠客帮忙解决!
//第一个问题是if(BindErr == KErrNone)语句内部没有执行,
//第二个问题是程序到iSmsMessage->InternalizeL(readStream)时退出。
void CSMSEngine::SocketListen()
{
_LIT(KTag, "#");
TBuf8<2> matchTag;
matchTag.Copy(KTag);
iSocketServer.Connnect();
TInt err = iSocket.Open(iSocketServer, KSMSAddrFamily, KSockDatagram, KSMSDatagramProtocol);
if(err==KErrNone)
{
TRequestStatus iStatus;
TSmsAddr smsaddr;
smsaddr.SetSmsAddrFamily(ESmsAddrMatchText);
smsaddr.SetTextMatch(matchTag);
TInt BindErr = iSocket.Bind(smsaddr);
//为什么没有成功绑定呢?通过写日志的发现程序走不进下面的if语句啊!
if(BindErr == KErrNone)
{
iPckgBuf() = KSockSelectRead;
//Applies an asynchronous I/O control operation on a socket.
iSocket.Ioctl( KIOctlSelect,iStatus, &iPckgBuf, KSOLSocket);
iRead=ETrue;
SetActive();
}
}
}

// -----------------------------------------------------------------------------
// CSMSEngine::RunL()
// Gets hit everytime a message with the 'tag' arrives
// -----------------------------------------------------------------------------
//当把上面if(err==KErrNone)注释掉时,可以使得程序走到RunL();但是通过日志发现程序
//只能走到iSmsMessage->InternalizeL(readStream)之前,
void CSMSEngine::RunL()
{
if(iRead)
{
CSmsBuffer *smsBuffer = CSmsBuffer::NewL();
CleanupStack::PushL(smsBuffer);
RSmsSocketReadStream readStream(iSocket);
iSmsMessage = CSmsMessage::NewL(iFs,CSmsPDU::ESmsDeliver,smsBuffer);
iSmsMessage->InternalizeL(readStream);
//这一句好像也不能执行,为什么吗啊?
readStream.Close();
iSmsMessage->Buffer().Extract(iBuf,0,iSmsMessage->Buffer().Length());
iSocket.Ioctl( KIoctlReadMessageSucceeded,iStatus, &iPckgBuf, KSolSmsProv);
CAknInformationNote* note122=new(ELeave) CAknInformationNote;
note122->ExecuteLD(iBuf);
iRead=EFalse;
SetActive();
CleanupStack::PopAndDestroy(smsBuffer);
}
}
...全文
320 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
fransli 2011-03-18
  • 打赏
  • 举报
回复
短信端口被别的软件占用了(网秦、来电通等),卸载他们后试试
fear317 2011-02-16
  • 打赏
  • 举报
回复
楼主,为什么绑定没有成功?给个解释及解决方法啊
sanjiaomao004 2010-07-27
  • 打赏
  • 举报
回复
楼上,你的问题解决了吗,我今天也遇到同样的问题,绑定时出现 -11错误
lgqing66 2010-05-25
  • 打赏
  • 举报
回复
好的, 谢谢!
a14776584 2010-05-24
  • 打赏
  • 举报
回复
试试smsAddr.SetTextMatch(KNullDesC8);

3,119

社区成员

发帖
与我相关
我的任务
社区描述
塞班系统(Symbian系统)是塞班公司为手机而设计的操作系统,它的前身是英国宝意昂公司的 EP ( Electronic Piece of cheese)操作系统。
社区管理员
  • Symbian社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧