发现很多远控都有这个重复上线的问题,其实不算重复上线,就是因为socket连接断掉了,closesocket()之后重新建立连接,需要在控制台上把原来的无活动连接从控制台上面删除.测试了一个晚上都没有发生重复上线的情况.
nCnt = m_serverlist.GetItemCount(); //获得当前在线的主机数量
nItem=m_serverlist.InsertItem(nCnt,(_bstr_t)ip,0); //nItem=新增加的记录,nItem值由自动排序生成,所以数值不会顺序生成
if(nCnt>1) //最后一项要大于1
{
--nCnt;
int i2=1;
//for(Tmpi=nItem;Tmpi<++nItem;Tmpi++ )
//{//nItem值是随机的,主机上线会自动按IP地址对nItem进行排序
//先判断外网IP和主机名称:
//Tmpi=nItem+1;
for(Tmpi=nItem+1;Tmpi<nItem+3;Tmpi++ )
{
if(m_serverlist.GetItemText(nItem,0 ) == m_serverlist.GetItemText(Tmpi,0)&&m_serverlist.GetItemText(nItem,1) == m_serverlist.GetItemText(Tmpi,1))
//if(m_serverlist.GetItemText(nItem,0 ) == m_serverlist.GetItemText(Tmpi,0))
{
//MessageBox("Host online repeat!","WARN");
// MessageBox(m_serverlist.GetItemText(Tmpi,0));
m_serverlist.DeleteItem(Tmpi); //删除以前的重复IP地址,保留最新的连接
}
//--Online;
nCnt = m_serverlist.GetItemCount();
temp.Format("Current Online: %d hosts",nCnt);
AfxGetMainWnd()->SetDlgItemText(IDC_STATIC_1, temp);
m_serverlist.Update(0);
}
I.S.T.O版权所有
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课