1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
|
#!/usr/local/bin/perl
#
# $Header: /cvsroot/Net::EasyTCP/util/server.pl,v 1.4 2002/11/03 09:06:18 mina Exp $
#
use Net::EasyTCP;
$|=1;
print "Creating server ...\n";
$server = new Net::EasyTCP(
mode => "server",
port => 2345,
welcome => "Welcome to my first little echo server",
)
|| die "ERROR CREATING SERVER: $@\n";
print "Setting callbacks ...\n";
$server->setcallback(
data => \&gotdata,
connect => \&connected,
disconnect => \&disconnected,
)
|| die "ERROR SETTING CALLBACKS: $@\n";
print "Starting server ...\n\n";
$server->start() || die "ERROR STARTING SERVER: $@\n";
sub gotdata() {
my $client = shift;
my $serial = $client->serial();
my $data = $client->data();
print "Client $serial sent me some data, sending it right back to them again\n";
$client->send($data) || die "ERROR SENDING TO CLIENT: $@\n";
if ($data eq "QUIT") {
$client->close() || die "ERROR CLOSING CLIENT: $@\n";
}
elsif ($data eq "DIE") {
$server->stop() || die "ERROR STOPPING SERVER: $@\n";
}
}
sub connected() {
my $client = shift;
my $serial = $client->serial();
my $ip = $client->remoteip();
my $port = $client->remoteport();
print "Client $serial [$ip:$port] just connected\n";
}
sub disconnected() {
my $client = shift;
my $serial = $client->serial();
print "Client $serial just disconnected\n";
}
|