如果远程地址为空,则使用首次地址作为远程地址

This commit is contained in:
Stone 2016-06-03 14:43:27 +00:00
parent d9f354fda3
commit 45afa16662
1 changed files with 11 additions and 12 deletions

View File

@ -86,19 +86,8 @@ void TokenController::Open()
//Port->Show(true); //Port->Show(true);
#endif #endif
Controller::Open();
auto sock = dynamic_cast<ISocket*>(Port); auto sock = dynamic_cast<ISocket*>(Port);
if (sock) if (sock) Server = &sock->Remote;
{
Server = &sock->Remote;
// 如果远程IP地址不存在则调用DNS解析域名取得
if(sock->Remote.Address == IPAddress::Any() && sock->Server)
{
auto ip = sock->Host->QueryDNS(sock->Server);
if(ip != IPAddress::Any()) sock->Remote.Address = ip;
}
}
if (!Stat) if (!Stat)
{ {
@ -107,6 +96,8 @@ void TokenController::Open()
Sys.AddTask(StatTask, Stat, 5000, 30000, "令牌统计"); Sys.AddTask(StatTask, Stat, 5000, 30000, "令牌统计");
#endif #endif
} }
Controller::Open();
} }
void TokenController::Close() void TokenController::Close()
@ -231,6 +222,14 @@ bool TokenController::OnReceive(Message& msg)
return false; return false;
} }
} }
// 如果远程地址为空,则使用首次地址作为远程地址
auto svr = (IPEndPoint*)Server;
auto rmt = (IPEndPoint*)msg.State;
if(svr && rmt)
{
if(svr->Address == IPAddress::Any()) svr->Address = rmt->Address;
}
ShowMessage("Recv", msg); ShowMessage("Recv", msg);