WSAAsyncGetHostByName同时解析多个域名(100分)

  • 主题发起人 主题发起人 iamrich
  • 开始时间 开始时间
I

iamrich

Unregistered / Unconfirmed
GUEST, unregistred user!
如何使用WSAAsyncGetHostByName能同时解析多个域名而不是一个一个的顺序被解析?(不使用线程模式最好)
 
饭要一口一口吃
事要一个一个做
 
比如说我有5个域名要解析
www.sina.com.cn
www.sexd.com
www.163.com
www.sohu.com
www.delphibbs.com

我一个循环就把这5个都用WSAAsyncGetHostByName开始异步解析
可是解析 www.sexd.com 很慢可能需要3秒钟,由于 WSAAsyncGetHostByName 好像是一个接一个解析域名的而导致后面的 www.163.com 要等3秒钟后才得到结果.

有没有更好的方法能解决这个问题?
 
典型的线程应用!你不用线程是不可能实现的.就好比,你只有一张嘴,怎么能同时咀嚼同时说话呢?
 
WSAAsyncGetHostByName我记得是异步函数来的吧,也就是说是不阻塞线程的。调用了它就立刻返回了。解释出来的IP地址通常窗口消息返回一个结构的地址,之后获得的吧。

你说的要等几秒是什么意思?要几秒后才获得解释出来的IP信息的话这是正常的。如果你说函数调了后阻塞了线程几秒,有可能吗?
 
Writer: 我不是说 WSAAsyncGetHostByName 是堵塞的.
这样我解释清楚一点吧
比如说我有5个域名要解析
www.sina.com.cn (解析需要1秒)
www.sexd.com (解析需要5秒)
www.163.com (解析需要1秒)
www.sohu.com (解析需要1秒)
www.delphibbs.com (解析需要1秒)

我按照这个顺序,调用5次WSAAsyncGetHostByName,因为WSAAsyncGetHostByName 的顺序执行,www.163.com 的解析结果实际上要在6秒钟后才返回消息结果

而我所希望的是,是否有一种方式,能让我快速得到这5个域名的ip地址,而不是一个接一个的.
 
我想你有些地方误会了。 之所以会在6秒后才返回IP地址信息,是因为解释DNS本来就要连接了网络上面,而且解释不同的域名可能虽要的时间也不同(详细看看DNS的原因吧)。
 
后退
顶部