http://www.perlmonks.org?node_id=317642


in reply to Net::NNTP ping?

Given that the Net::NNTP module inherits from the IO::Socket class, you may find the connected method inherited from this class to be of use. This method returns the peer address if the socket is in a connected state or an undefined value if the socket is not connected.

For example:

use Net::NNTP; use Socket; my $nntp = Net::NNTP->new('news-server'); my $hostaddr = $nntp->connected; print inet_ntoa((sockaddr_in($hostaddr))[1]), "\n" if defined $hostadd +r;

 

perl -le "print+unpack'N',pack'B32','00000000000000000000001010100100'"

Replies are listed 'Best First'.
Re: Re: Net::NNTP ping?
by akis (Novice) on Dec 30, 2003 at 10:17 UTC
    Hello, thanks for the reply. So I wrote a quick one line test. White spaces added so I can read it. Results are as follows:
    perl -MNet::NNTP -MSocket -e ' $n=Net::NNTP->new( localhost, Port=>119, Timeout=>10); sleep 3600; print inet_ntoa((sockaddr_in($n->connected()))[1]) || "not connected"'
    prints out "127.0.0.1" Either the connection is still open (unlikely), or connected() is lying to me.
      At this point, I would be recommending enabling the Debug argument to the Net::NNTP constructor in your script to show NNTP protocol communication between your client script and local news server.

      For example:

      rob@development:/home/rob$ cat nntp.perl use Net::NNTP; use Socket; my $nntp = Net::NNTP->new('news-server', 'Debug' => 1); my $hostaddr = $nntp->connected; print inet_ntoa((sockaddr_in($hostaddr))[1]), "\n" if defined $hostadd +r; rob@development:/home/rob$ perl nntp.perl Net::NNTP>>> Net::NNTP(2.22) Net::NNTP>>> Net::Cmd(2.24) Net::NNTP>>> Exporter(5.562) Net::NNTP>>> IO::Socket::INET(1.25) Net::NNTP>>> IO::Socket(1.26) Net::NNTP>>> IO::Handle(1.21) Net::NNTP=GLOB(0x8262444)<<< 200 Welcome to BigPond Broadband - http:/ +/www.telstra.com/ (Typhoon v2.0.4.336) Net::NNTP=GLOB(0x8262444)>>> MODE READER Net::NNTP=GLOB(0x8262444)<<< 200 Welcome to BigPond Broadband - http:/ +/www.telstra.com/ (Typhoon v2.0.4.336) 61.9.191.5 Net::NNTP=GLOB(0x8262444)>>> QUIT Net::NNTP=GLOB(0x8262444)<<< 205 GoodBye

      Furthermore, I would recommend comparing the return result of the connected method with the socket status as reported by operating system tools such as netstat - The usage of this tool to show the status of established TCP sockets would be netstat -t under Linux and netstat -p tcp under Windows.

       

      perl -le "print+unpack'N',pack'B32','00000000000000000000001010100110'"