Name

IO::Socket::INET - Objektschnittstelle für AF_INET-Domain-Sockets


Übersicht

use IO::Socket::INET;


Beschreibung

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.


Konstruktor

new ( [ARGS] )
Erzeugt ein 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.

Methoden

sockaddr ()
Gibt den Adreß-Teil der sockaddr-Struktur des Sockets zurück.

sockport ()
Gibt die Portnummer zurück, die das Socket auf dem lokalen Host verwendet.

sockhost ()
Gibt den Adreß-Teil der sockaddr-Struktur des Sockets in der Form "xx.xx.xx.xx" zurück.

peeraddr ()
Gibt den Adreß-Teil der sockaddr-Struktur des Sockets auf dem entfernten Host zurück.

peerport ()
Gibt die Portnummer des Sockets auf dem entfernten Host zurück.

peerhost ()
Gibt den Adreß-Teil der sockaddr-Struktur des Sockets auf dem entfernten Host in der Form "xx.xx.xx.xx" zurück.


Siehe auch

Socket, IO


Copyright

Copyright (c) 1997-8 Graham Barr. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.


Übersetzer

Deutsche Übersetzung von Peter Klicman, Köln
© 1998 by O'Reilly Verlag, Köln