use IO::Socket::INET;
IO::Socket::INET stellt eine Objektschnittstelle bereit, mit der Sockets in der AF_INET-Domain erzeugt und verwendet werden können. Es baut auf der IO-Schnittstelle auf und erbt alle von IO definierten Methoden.
IO::Socket::INET-Objekt, das eine Referenz auf ein neu erzeugtes Symbol (beachten Sie hierzu auch das Symbol-Paket) darstellt. new kann optional auch Argumente verarbeiten. Diese Argumente liegen als Schlüssel/Wert-Paare vor.
Neben den von IO akzeptierten Schlüssel/Wert-Paaren stellt IO::Socket::INET die folgenden zur Verfügung:
PeerAddr Adresse des entfernten Hosts <hostname>[:<port>] PeerHost Synonym für PeerAddr PeerPort Entfernter Port oder Dienst <service>[(<no>)] | <no> LocalAddr Lokal gebundene Hostadresse hostname[:port] LocalHost Synonym für LocalAddr LocalPort Lokal gebundener Host-Port <service>[(<no>)] | <no> Proto Name (oder Nummer) des Protokolls "tcp" | "udp" | ... Type Socket-Typ SOCK_STREAM | SOCK_DGRAM | ... Listen Queue-Größe für Listen Reuse Setze SO_REUSEADDR vor Bindung. Timeout Timeout-Wert für verschiedene Operationen MultiHomed Versuche alle Adressen für Multihome-Hosts.
Ist Listen angegeben, wird ein Listen-Socket erzeugt. Handelt es sich beim Socket-Typ, der aus dem Protokoll abgeleitet wird, hingegen um SOCK_STREAM, dann wird connect() aufgerufen.
Obwohl es nicht verboten ist, ist die Verwendung von MultiHomed bei einem Socket im Non-Blocking-Modus nur wenig sinnvoll. Das liegt daran, daß der erste Connect niemals mit einem Timeout fehlschlägt, weil die Verbindung nicht blockiert.
PeerAddr kann einen Hostnamen oder eine IP-Adresse der Form "xx.xx.xx.xx" enthalten. PeerPort kann eine Zahl oder ein symbolischer Dienstname sein. Dem Servicenamen kann in Klammern eine Zahl folgen, die verwendet wird, wenn das System den Dienst nicht kennt. Auch PeerPort kann in PeerAddr eingebettet werden, indem man ihm einen ":" voranstellt.
Geben Sie Proto nicht an, während Sie einen symbolischen PeerPort festlegen, versucht der Konstruktor, Proto aus dem Dienstnamen abzuleiten. Als letzter Ausweg wird Proto mit "tcp" angenommen. Der Type-Parameter wird aus Proto abgeleitet, wenn er nicht angegeben wird.
Wird dem Konstruktor nur ein einzelnes Argument übergeben, wird davon ausgegangen, daß es sich um PeerAddr handelt.
Beispiele:
$sock = IO::Socket::INET->new(PeerAddr => 'www.perl.org',
PeerPort => 'http(80)',
Proto => 'tcp');
$sock = IO::Socket::INET->new(PeerAddr => 'localhost:smtp(25)');
$sock = IO::Socket::INET->new(Listen => 5,
LocalAddr => 'localhost',
LocalPort => 9000,
Proto => 'tcp');
$sock = IO::Socket::INET->new('127.0.0.1:25');
Hinweis: Seit der Version 1.18 ist bei allen IO::Socket-Objekten das Autoflushing standardmäßig aktiviert. Bei früheren Releases ist das nicht der Fall.