On 02:16 pm, rut...@osu.edu wrote:
Hi,

I need to do a DNS resolution of a hostname to an IPv4 address in order to then send out a UDP packet via twisted’s APIs. There appears to be 2 ways to do this. Is it better to use twisted.names.client.getHostByName(), or is it better to use reactor.resolve()? Is there a bias for one over the
other?  Is one deprecated and the other isn’t?

`reactor.resolve` is "do something, who knows what really, to turn a name into an IPv4 address".

`twisted.names.client.getHostByName` is "use Twisted's DNS client implementation to issue the necessary DNS queries to resolve a name into an IPv4 or IPv6 address".

If you definitely only care about IPv4 then `reactor.resolve` is going to work correctly in more situations. By default it will use the system resolver. Therefore, by default, you will get whatever weird configuration the system resolver has been given (for example: use /etc/hosts or use mDNS or use NIS or YP or whatever.

Note that `reactor.resolve` is a pluggable interface and application code is allowed to substitute an alternate resolver implementation which may work in some other way.

If you care specifically about DNS or you need IPv6 or you have a reason to want to avoid threads (which, by default, `reactor.resolve` uses), you might prefer to use `twisted.names.client` directly.

Most applications will probably be okay with `reactor.resolve` but I imagine this could change as IPv6 use gradually becomes more widespread.

Jean-Paul

_______________________________________________
Twisted-Python mailing list
Twisted-Python@twistedmatrix.com
http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python

Reply via email to