www.farid-hajji.net banner

Farid Hajji

Perl: Einführung, Anwendungen, Referenz (2/e) [Support-Site]

Farid Hajji: Perl - Einführung, Anwendungen, Referenz
2., aktualisierte und erweiterte Auflage
Addison-Wesley Longman, ISBN 3-8273-1535-2

Beispielprogramm

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
FreeBSD Logo