perl function getpeername
The getpeername
function in Perl is used to retrieve the address of the peer to which a socket is connected.
Here's an example of using getpeername
in Perl:
#!/usr/bin/perl use strict; use warnings; use IO::Socket; # Create a new socket my $socket = IO::Socket::INET->new( PeerAddr => "example.com", PeerPort => "http(80)", Proto => "tcp" ); if (!$socket) { die "Could not create socket: $!\n"; } # Get the peer address and port my $peer_addr = getpeername($socket); my ($peer_port, $peer_ip) = sockaddr_in($peer_addr); # Convert the IP address to dotted-quad string format my $peer_ip_str = inet_ntoa($peer_ip); print "Connected to $peer_ip_str:$peer_port\n"; # Close the socket close($socket);
In this example, we create a new TCP socket and connect to the HTTP service on "example.com". We then use the getpeername
function to retrieve the address of the peer to which the socket is connected. This address is returned in binary format, so we use the sockaddr_in
function from the Socket
module to extract the peer port and IP address.
We then convert the IP address to a dotted-quad string format using the inet_ntoa
function, and print the resulting string to the console.
Finally, we close the socket using the close
function.
When you run this script, it will print the IP address and port number of the peer to which the socket is connected, assuming that the connection is successful.
Note that the specific behavior of getpeername
may depend on the type of socket and the network protocol being used, and that it may be necessary to have appropriate privileges to access socket information. Additionally, the socket must be connected before getpeername
can be called.