Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer
 
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)

Replies are listed 'Best First'.
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?
[Corion]: Hi marto!
[Corion]: I hope all is well marto! ;) My godson had a surprise visit to the hospital yesterday because he fell and had cut his skin besides his eye, but everything was glued together again and all is well
[marto]: good grief, that's not fun, glad to hear all is as well as could be :)
[Corion]: marto: Yeah - their mother picked all three of them up at the kindergarden to then go to the hospital, and all three of them were well behaved, and all also were quite obedient when they came home, so they recognized the situation

How do I use this? | Other CB clients
Other Users?
Others avoiding work at the Monastery: (8)
As of 2016-12-08 09:20 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    On a regular basis, I'm most likely to spy upon:













    Results (137 votes). Check out past polls.