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

Re: CLIENT help!

by Anonymous Monk
on Jun 10, 2012 at 12:22 UTC ( #975421=note: print w/ replies, xml ) Need Help??


in reply to CLIENT help!

Hello! I am having trouble with a socket server and client interaction. I want to execute a perl script by default when a client TELNETs into my server. I tried this once, but it ran the script on the server's side, and not the client's side. Help?!

You mean to say, when somebody (a client) speak (opens socket) to you (your server), you want to make that somebody sing opera (run your program)?

You can't do that without prior agreement (client install your software ), esp using telnet, since that is mind control (security violation)


Comment on Re: CLIENT help!
Re^2: CLIENT help!
by tobyink (Abbot) on Jun 10, 2012 at 22:01 UTC

    Indeed.

    Though perhaps what the questioner actually wants is to run the script at the server end, but display the script's output at the client end? (And is just not expressing that especially clearly.) That is, after all, a fairly common desire.

    In which case, it's something along these lines...

    my $output = `perl the-script.pl`; print CLIENT $output;
    perl -E'sub Monkey::do{say$_,for@_,do{($monkey=[caller(0)]->[3])=~s{::}{ }and$monkey}}"Monkey say"->Monkey::do'

      I tried it, and added the lines:

      my $output = `perl the-script.pl`; print CLIENT $output;

      But it just prints "smile from the server" and doesnt run the perl program. :-/

      Here is the total code:

      #! /usr/bin/perl -w # server0.pl #-------------------- #use strict; use Socket; # use port 7890 as default my $port = shift || 7890; my $proto = getprotobyname('tcp'); # create a socket, make it reusable socket(SERVER, PF_INET, SOCK_STREAM, $proto) or die "socket: $!"; setsockopt(SERVER, SOL_SOCKET, SO_REUSEADDR, 1) or die "setsock: $!"; # grab a port on this machine my $paddr = sockaddr_in($port, INADDR_ANY); # bind to a port, then listen bind(SERVER, $paddr) or die "bind: $!"; listen(SERVER, SOMAXCONN) or die "listen: $!"; print "SERVER started on port $port "; # accepting a connection my $client_addr; while ($client_addr = accept(CLIENT, SERVER)) { # find out who connected my ($client_port, $client_ip) = sockaddr_in($client_addr); my $client_ipnum = inet_ntoa($client_ip); my $client_host = gethostbyaddr($client_ip, AF_INET); # print who has connected print "got a connection from: $client_host","[$client_ipnum] "; # send them a message, close connection print CLIENT "Smile from the server\n"; # open CLIENT, ("system ("perl io-test-1.pl");"); # open (CLIENT, "system ("perl io-test-1.pl")"); # open CLIENT, "do `perl io-test-1.pl`"; #my $status = CLIENT, system("perl io-test-1.pl"); #CLIENT $status = CLIENT, system("perl io-test-1.pl"); my $output = `perl io-test-1.pl`; print CLIENT $output; close CLIENT; }

        So, what does io-test-1.pl do? Does it actually generate output? Does it compile? Does it even exist?

        PS: commenting out your use strict; is a pretty bad idea. Ignoring problems doesn't solve them...

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others browsing the Monastery: (3)
As of 2014-11-28 18:49 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My preferred Perl binaries come from:














    Results (199 votes), past polls