BaseLooper框架内置了一个DNS异步解析器DnsLooper
需要用到时,请用如下代码把DnsLooper加到MainLooper下面
{
auto looper = make_shared<DnsLooper>();
AddChild(looper);
looper->Start();
}
DnsLooper也可在需要时自动创建
在需要做DNS解析时
enum
{
BM_DNS_ACK = (BM_USER+ 1),
};
auto dnsLooper = dynamic_pointer_cast<DnsLooper>(mainLooper->FindObject("DnsLooper"));
dnsLooper->AddRequest(dnsName,shared_from_this(), BM_DNS_ACK);
在 long OnMessage(UINTmsg,WPARAMwp,LPARAMlp)中收到结果
switch(msg)
{
caseBM_DNS_ACK:
{
CStringEx dns = (constchar*)wp;
CStringEx ip = (constchar*)lp;
DV("dnsAck,%s=[%s]",dns.c_str(), ip.c_str());
return0;
}
}