in reply to Re^2: alarm not working on windows machine
in thread alarm not working on windows machine

My typo. This: my $sel = IO::Socket->new( $socket ); should have been: my $sel = IO::Select->new( $socket );.

Try this:

#!perl -w use strict; use IO::Socket::INET; use IO::Select; my $channel_id = open_channel("127.0.0.1", "7777"); sub open_channel { # create a connecting socket my $host = shift; my $port = shift; my $timeout = 5; if ( $host !~ m/(\d+)\.(\d+)\.(\d+).(\d+)/i ) { print "IP Address:'$host' is not a Valid IP-Address."; return 139; } my $socket = new IO::Socket::INET ( PeerHost => $host, PeerPort => $port, Proto => 'tcp', ); die "cannot connect to the server $!\n" unless $socket; my $sel = IO::Select->new( $socket ); if ( !defined $socket ) { print "Opening TCP Channel to host: $host and Port: $port Fail +ed !!"; return 138; } else { $socket->send("Check Connectivity"); while (1) { my @ready = $sel->can_read( $timeout ) or do{ print "=> Time-Out as no data received for '$timeo +ut sec'.!!\n"; last; }; my $recieved_data= <$socket>; if ( defined $recieved_data ) { chomp($recieved_data); if ($recieved_data =~ /Connected to TCP socket server/ +i){ print "TCP Connection established with Channel id: + '$socket'\n"; return $socket; } else{ print "Cannot craete connection with server\n"; return 137; } } } $socket->close(); } }

Note: this is still untested code. The idea is that you should look at the docs for IO::Select and try to understand what the above code is suggesting.


With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.

Replies are listed 'Best First'.
Re^4: alarm not working on windows machine
by Rahul Gupta (Sexton) on Nov 10, 2013 at 07:54 UTC

    Thanks for your reply..

    This is working fine... but when i am giving any other Linux command. for example if i replace $socket->send("Check Connectivity"); with $socket->send("ls -l \n");.

    i am not getting any response from server side.

    please help me how can i do so.
    Thanks in advance
      please help me

      Hire yourself a professional programmer.


      With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
      Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
      "Science is about questioning the status quo. Questioning authority".
      In the absence of evidence, opinion is indistinguishable from prejudice.