File: server.pl

package info (click to toggle)
libnet-easytcp-perl 0.17-1
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 116 kB
  • ctags: 37
  • sloc: perl: 1,065; makefile: 52
file content (56 lines) | stat: -rwxr-xr-x 1,402 bytes parent folder | download
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";
	}