gprs服务器的问题
精锐掷矛手 2009-12-11 08:27:10 gprs终端设备每隔3分钟就给我发一次登录包,我用登录时间和电话号码判断给服务器发送登录包的gprs是否已经在线,如何登录时间和电话号码相同,就说明这个gprs已经登录了;如果登录时间不一样,电话号码一样,说明是已经重新连接的gprs。服务器会断开先前的连接。gprs登录时间是在gprs连接服务器的时候确定的。代码如下:
/*
*************************************
*功能:查找终端链表,剔除已登录的终端
*参数:str:终端标识符(电话号码)
*返回值:void
*************************************
*/
int IOCP::CheckLoginClient(ClientContext * pClient,const CString &str)
{
EnterCriticalSection(&g_csClientList);
int re_value=0;
std::vector <ClientContext *>::iterator IterClientContext;
for (IterClientContext = g_ClientContext.begin(); IterClientContext != g_ClientContext.end(); IterClientContext++)
{
ClientContext * Client=*IterClientContext;
if ((Client->LoginTime==pClient->LoginTime) && (Client->GetPhone()==str))
{
re_value=1;
break;
}else
if ((Client->GetPhone()==str) && (Client->LoginTime!=pClient->LoginTime))
{
g_ClientContext.erase(IterClientContext);
delete *IterClientContext;
*IterClientContext=NULL;
re_value=2;
break;
}
}
LeaveCriticalSection(&g_csClientList);
return re_value;
}
re_value=1时说明是已经连接的gprs
可运行一段时间后,程序总弹出错误。望高手指点,不胜感激!