in reply to Get the IP Address

I think what Abigail-II meant to imply may have been something like:

#!/usr/bin/perl -w use strict; my $hostname = 'www.yahoo.com'; my ($name,$aliases,$addrtype,$length,@addrs) = gethostbyname($hostname +); foreach my $addr ( @addrs ) { print join('.', unpack('C4', $addr)), "\n"; }

(I didn't find gethostbyname's documentation to be intuitively obvious my first time, either.)

Unfortunately, gethostbyname returns all of the IP addresses which could match, so it probably does not immediately solve your problem. You want to know which specific IP address was returned when LWP looked up the name to try to get the content.

You may need to look up an IP address first (possibly using gethostbyname), then use the IP address instead of the hostname to make the LWP request. I.e., http://66.218.71.84/ instead of http://www.yahoo.com/

However, if the web server requires the "Host:" HTTP header to contain the hostname in order to determine the content to return (as with virtual servers), then it could get more complicated still.

Rather than trying to solve all possible problems, I'll let you go off and try things and come back if you run into specific roadblocks or questions.

-- Eric Hammond

Replies are listed 'Best First'.
Re: Re: Get the IP Address
by Anonymous Monk on Aug 27, 2003 at 19:23 UTC
    Eric,

    Thank You for your reply! Your post sums up where I'm at and what I'm hoping to accomplish with this. I do indeed need to have the HTTP header use the hostname and not the IP.

    >"You want to know which specific IP address was returned when LWP looked up the name to try to get the content."

    The only thing I can think of would be to modify a lower module (the one which is actually performs the request lookup) and make that value available to LWP.

    Any suggestions?

      Here's the order I would try. You may like them in a different order or have better ideas.

      1. See if you can find a way to force LWP to pass a specific "Host:" header even though you are telling it what specific IP address to access in the URL.
      2. See if you can subclass something in LWP to be able to do your own DNS lookup, or to get access to the IP address resolved even when the request fails.
      3. Contact the LWP author(s) and see if they have suggestions or can modify the interface to support what you need.
      4. Write your own HTTP client, provided your needs are simple.
      5. Copy and edit the guts of LWP classes.

      -- Eric Hammond