您的位置:首页 > 理论基础 > 计算机网络

Symbian—如何处理网络连接超时的问题?

2010-07-29 16:18 471 查看
我们需要一个定时器,等待一定时间后自动断开网络连接:

定义如下:

CPeriodic* iTimer;

static TInt TimerBack(void *p);//CPeriodic start 的回调函数

在HTTP连接的类中

初始化如下:

iTimer = CPeriodic::NewL(CActive::EPriorityStandard);

在POST请求中加入:

iTimer->Start(20000000, 20000000, TCallBack(TimerBack, this));

在回调函数参考如下:

TInt CClientEngine::TimerBack(void *p)

{

CClientEngine* f = static_cast (p);

f->iTransaction.Close();//关掉网络连接

f->iTimer->Cancel();//关掉定时器

CGblData::GetGblData()->DeleteWaitNoteL();

CGblData::GetAppUiPtr()->SetNotWait(ETrue);

HBufC8* tempdatabuf;

TBuf8<100> itempbuf =_L8("");

itempbuf.Append(R_MOLO_CLIENT_TIMEOUT);

itempbuf.Append(_L8(""));

tempdatabuf = itempbuf.Alloc();

CGblData::GetAppUiPtr()->ClientBodyReceivedL(

(const char*) tempdatabuf->Ptr());

if (tempdatabuf)

{

delete tempdatabuf;

tempdatabuf = NULL;

}

return 1;

}

在MHFRunL中加入:

iTimer->Cancel();

因为当网络请求先返回那么我们就停止定时器

最后记得在析构函数中加入:

iTimer->Cancel();

if (iTimer)

{

delete iTimer;

iTimer = NULL;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐