#! /usr/bin/perl -w use threads; use IO::Socket; use DateTime; my $socket = IO::Socket::INET->new( Proto => 'tcp', PeerAddr=> 'localhost', PeerPort=> "9927", Reuse => 1, Timeout => 1 ) or die "ERROR in Socket Creation : $!\n"; my $select = IO::Select->new($socket) or die "IO::Select $!"; my $localport = $socket->sockport(); sub writelog { my $dt = DateTime->now; my $date = $dt->ymd . " " . $dt->hms; my ( $line ) = @_; open (LOGFILE, '>>/var/log/home/roll.log'); print LOGFILE "$date - $line\n"; close (LOGFILE); } sub decode_cmd { my $cmd = shift; my @str = split(//, $cmd); my @cmds = (); my $cmd_str = ""; for ( my $i = 0; $i < @str; $i++ ) { push( @cmds, ord( $str[ $i ] ) ); } return join( ',', @cmds ); } #main # translate argument int to chr and build command string my $num_args = $#ARGV + 1; my $cmd = ""; for ( my $i = 0; $i < $num_args; $i++ ) { if ( $ARGV[$i] < 256 ) { $cmd .= chr($ARGV[$i]); } else { $cmd .= pack("n",$ARGV[$i]); } } $cmd = chr(254) . $cmd . chr(255); # 254=cmd begin 255=cmd stop writelog( "client:" . $localport . "[sendCmdToServer]: " . decode_cmd( $cmd ) ); # send command to server print $socket "$cmd\n"; # wait for servers answer my $line = ""; if ( $select->can_read(5.25) ) { chomp( $line = <$socket> ); } writelog( "client:" . $localport . "[serverAnswer]: \"$line\"" );