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

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);
#endif
Controller::Open();
auto sock = dynamic_cast<ISocket*>(Port);
if (sock)
{
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 (sock) Server = &sock->Remote;
if (!Stat)
{
@ -107,6 +96,8 @@ void TokenController::Open()
Sys.AddTask(StatTask, Stat, 5000, 30000, "令牌统计");
#endif
}
Controller::Open();
}
void TokenController::Close()
@ -232,6 +223,14 @@ bool TokenController::OnReceive(Message& msg)
}
}
// 如果远程地址为空,则使用首次地址作为远程地址
auto svr = (IPEndPoint*)Server;
auto rmt = (IPEndPoint*)msg.State;
if(svr && rmt)
{
if(svr->Address == IPAddress::Any()) svr->Address = rmt->Address;
}
ShowMessage("Recv", msg);
return Controller::OnReceive(msg);