Beefy Boxes and Bandwidth Generously Provided by pair Networks
Pathologically Eclectic Rubbish Lister
 
PerlMonks  

Re^2: alarm not working on windows machine

by Rahul Gupta (Sexton)
on Oct 19, 2013 at 09:49 UTC ( #1058894=note: print w/ replies, xml ) Need Help??


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

Thanks for you reply.

while executing your code i am getting this error.

Odd number of elements in hash assignment at C:/Perl/lib/IO/Socket.pm +line 41. IO::Socket: Cannot configure a generic socket at test.pl line 25

and when i changed

 my $sel = IO::Socket->new( $socket ); with  my $sel = IO::Socket::INET->new( $socket );

then getting this error

Can't call method "can_read" on an undefined value at test.pl line 35.


Comment on Re^2: alarm not working on windows machine
Select or Download Code
Re^3: alarm not working on windows machine
by BrowserUk (Pope) on Oct 19, 2013 at 10:24 UTC

    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.

      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.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1058894]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others contemplating the Monastery: (7)
As of 2014-08-28 04:34 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The best computer themed movie is:











    Results (256 votes), past polls