首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

TCustomWinSocket,该怎么解决

2012-03-06 
TCustomWinSocket当服务端程序退出又登录上后,客户端保持不变的情况下用下边的代码,可能找回连接吗?TCusto

TCustomWinSocket
当服务端程序退出又登录上后,客户端保持不变的情况下
用下边的代码,可能找回连接吗?

TCustomWinSocket* __fastcall TMainForm::GetSocketByServerIp(AnsiString rmIp)
{
  int mConns= ServerSocket1->Socket->ActiveConnections;
  if(mConns>0)
  {
  for(int i=mConns-1;i>=0;i--)
  {
  if(ServerSocket1->Socket->Connections[i]->RemoteAddress==rmIp)
  return ServerSocket1->Socket->Connections[i];
  }
  }
  return NULL;
}

[解决办法]
肯定不行。先不说TCP/IP建立连接的三次握手过程,重启后ServerSocket1->Socket->Connections[i]就是空的。

ServerSocket1->Socket->Connections[i]里边保存的是被服务器Socket的Accept后的Socket,程序重启,没有客户端连接上,它就是空的。

常见的做法是在ClientSocket的OnError事件中,启动一个Timer,让Timer定时尝试连接服务器程序,然后在OnConnect事件中停掉Timer

热点排行