简体   繁体   中英

Perl Socket Connection Check

I've been trying to debug this perl issue for awhile but had made no head way. what I'm trying to do is determain if the connection is a socks4/5 connection.

# ./pctest.pl
Name "main::junk" used only once: possible typo at ./pctest.pl line 60.
Name "main::empty" used only once: possible typo at ./pctest.pl line 60.
IO::Socket::INET: Bad hostname 'C1(X'   ...propagated at ./pctest.pl line 52.

I've also had this error (before i added or die @$; at the end):

Can't use an undefined value as a symbol reference at ./pctest.pl line 56.

.

...
  $look = IO::Socket::INET->new( PeerAddr => $_, Proto => 'tcp', Timeout => 5 ) or die @$;

            $sock4 = pack( "CCS", 4, 1, 80 );

            print $look $sock4;

            read( $look, $recv, 10 );

            ( $empty, $granted, $junk ) = unpack( "C C C6", $recv );

            if( $granted == 0x5A )
            {
                    print " Yes\n";
            }
            else
            {
                    print " No\n";
            }
...

There's a typo. @$ should really be $@ .

To get rid of the "possible typo" messages and since $empty and $junk seem to be unused in your code, write:

my @result = unpack("C C C6", $recv);

if ($result[1] == 0x5A) {
# ...
}

Just a side note : I think you are thinking of $@, instead of @$. You need to enclose the code in an

eval { ... };

construction. See:

my $look;
eval { $look = IO::Socket::INET->new( PeerAddr => $_, Proto => 'tcp', Timeout => 5 ) };

if ($@) {
   do_something_with($@);
}

Granted, that doesn't answer the original question :)

The error message means that your parameter value for PeerAddr in the IO::Socket::INET->new call is invalid.

The constructor expects the PeerAddr value to be a hostname or an IP address (nnn.nnn.nnn.nnn). Check the contents of $_ and I bet you'll find something different.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM