| Net-Address-IPv4-Local documentation | Contained in the Net-Address-IPv4-Local distribution. |
Net::Address::IPv4::Local - A class for discovering the local system's IP address
0.12
use Net::Address::IPv4::Local;
# Get the local system's IP address that is "connected" to "the internet":
my $address = Net::Address::IPv4::Local->public;
# Get the local system's IP address that is "connected" to the given remote
# IP address:
my $address = Net::Address::IPv4::Local->connected_to($remote_address);
Net::Address::IPv4::Local discovers the local system's IP address that would be used as the source address when contacting "the internet" or a certain specified remote IP address.
This class just provides the following instance methods:
Returns the textual representation of the local system's IP address that is "connected" to "the internet".
Returns the textual representation of the local system's IP address that is "connected" to the given remote IP address.
The latest version of Net::Address::IPv4::Local is available on CPAN and at http://www.mehnle.net/software/net-address-ipv4-local.
Support is usually (but not guaranteed to be) given by the author, Julian Mehnle <julian@mehnle.net>.
Net::Address::IPv4::Local is Copyright (C) 2005 Julian Mehnle <julian@mehnle.net>.
Net::Address::IPv4::Local is free software. You may use, modify, and distribute it under the same terms as Perl itself, i.e. under the GNU GPL or the Artistic License.
| Net-Address-IPv4-Local documentation | Contained in the Net-Address-IPv4-Local distribution. |
# # Net::Address::IPv4::Local class, # a class for discovering the local system's IP address. # # (C) 2005 Julian Mehnle <julian@mehnle.net> # $Id: Local.pm,v 1.4 2005/05/05 12:57:28 julian Exp $ # ##############################################################################
package Net::Address::IPv4::Local;
our $VERSION = '0.12';
use warnings; use strict; use Error qw(:try); use IO::Socket::INET; use constant DEFAULT_REMOTE_ADDRESS => '198.41.0.4'; # a.root-servers.net use constant DEFAULT_REMOTE_PORT => 53; # DNS # Interface: ##############################################################################
sub public; sub connected_to; # Implementation: ##############################################################################
sub public { my ($class) = @_; return $class->connected_to(DEFAULT_REMOTE_ADDRESS); }
sub connected_to { my ($class, $remote_address) = @_; my $socket = IO::Socket::INET->new( Proto => 'udp', PeerAddr => $remote_address, PeerPort => DEFAULT_REMOTE_PORT ); throw Net::Address::IPv4::Local::Error("Unable to create UDP socket: $!") if not defined($socket); return inet_ntoa($socket->sockaddr); }
package Net::Address::IPv4::Local::Error; use base qw(Error::Simple); package Net::Address::IPv4::Local; 1; # vim:tw=79