Socket-Schnittstelle bei Perl

 [Vorheriges Kapitel]  [Vorherige Seite]  [Inhaltsverzeichnis]  [Nächste Seite]  [Nächstes Kapitel]

timeserver1.pl
#!/usr/local/bin/perl -T

use strict;
use warnings;
use Socket;

my $port = 11011;

socket(SERVER, AF_INET, SOCK_STREAM, 0) ||
   die "Unable to create socket: $!\n";
setsockopt(SERVER, SOL_SOCKET, SO_REUSEADDR, pack("l", 1)) ||
   die "setsockopt failed: $!\n";
bind(SERVER, sockaddr_in($port, INADDR_ANY)) ||
   die "bind failed: $!\n";
listen(SERVER, SOMAXCONN) ||
   die "listen failed: $!\n";
while (defined(my $peer = accept(CLIENT, SERVER))) {
   print CLIENT scalar localtime, "\n";
   close(CLIENT);
}

*Prinzipiell stehen auch in Perl alle Systemaufrufe zur Verfügung und die beiden C-Programme können mehr oder weniger direkt übernommen werden.
 
*Das Modul Socket stellt all die zugehörigen Konstanten zur Verfügung wie AF_INET, SOCK_STREAM usw.
 
*Mit pack ist es möglich, binäre Datenfelder zu erzeugen. So liefert pack("l", 1) beispielsweise eine 1 als binäres Feld vom Datentyp long in C (daher ``l'').
 

 [Vorheriges Kapitel]  [Vorherige Seite]  [Inhaltsverzeichnis]  [Nächste Seite]  [Nächstes Kapitel]
Copyright © 1996 - 2003 Andreas Borchert, in HTML konvertiert am 01.10.2003