Farid Hajji: Perl - Einführung, Anwendungen, Referenz
2., aktualisierte und erweiterte Auflage
Addison-Wesley Longman, ISBN 3-8273-1535-2
udp-server.pl
#!/usr/local/bin/perl -w
# udp-server.pl -- Ein einfacher Tagline-Server, UDP-basiert.
use Socket;
use IO::Socket; # Standardmodul
# Zunaechst lesen wir eine Tagline-Datei ein
open TAGLINE, "< /tmp/mytags" or die "can't open taglines: $!\n";
@tags = <TAGLINE>;
close(TAGLINE);
# Wir erzeugen einen "unconnected" UDP-Socket auf einem Port:
use constant MYPORT => 5555;
$sock = new IO::Socket::INET(LocalPort => MYPORT, Proto => 'udp')
or die "can't create UDP Socket: $!\n";
# Wir warten einfach auf Anforderungsdatagramme und reagieren darauf:
use vars qw($input);
use constant MAXLEN => 1024;
$maxlines = 0;
while (1) {
if (defined ($src = $sock->recv($input, MAXLEN, 0))) {
$tagline = "(" . ++$maxlines . ")" . $tags[rand @tags];
send_answer($tagline, $src);
} else {
warn "Error in recv()! [", scalar(localtime(time)), "]\n";
}
}
sub send_answer {
my $tagline = shift;
my $dest = shift;
my $tosend = length($tagline);
while ($tosend) {
my $nsent = $sock->send($tagline, $tosend, $dest);
unless (defined $nsent) { next; }
$tosend -= $nsent;
$tagline = substr($tagline, -$tosend);
}
}
[Prev] [Up] [Relevant Chapter] [Next]
[Alte Quelle]
| Last modified: $Date: 2006/05/18 12:56:10 $ FH. Search :: Sitemap :: Disclaimer :: Copyright :: Privacy |
|