Los sockets son objetos que heredan de la clase IO::Handle y por ello comparten un buen número de atributos con los ficheros y los pipes:
IO::Handle
 |-- IO::File
 |-- IO::Pipe
 `-- IO::Socket
      |
      |-- IO::Socket::INET
      `-- IO::Socket::UNIX
El dominio de un socket define
la familia de protocolos de red y de esquemas de direccionamiento
que son soportados por el socket. 
La clase IO::Socket::INET, hereda de IO::Socket y define la conducta de los sockets en el dominio de internet. La constante asociada AF_INET caracteriza al dominio de los protocolos de internet.
La clase IO::Socket::UNIX
define las conductas de los sockets
para el dominio  AF_UNIX . La constante 
AF_UNIX se usa para la comunicación
entre procesos dentro de una misma máquina.  Otro nombre
para AF_UNIX es  AF_LOCAL .
pp2@nereida:~/src/perl$ perl -MIO::Socket -wde 0 DB<1> x (AF_UNIX, AF_INET) 0 1 1 2
La línea 12 del cliente HTTP del código que sigue muestra como crear un objeto 
 IO::Socket::INET . El constructor new retorna undef
si no se pudo crear el objeto. El constructor acepta dos estilos 
de llamada. El estilo corto sigue uno de estos formatos:
maquina.dominio.es:http maquina.dominio.es:http(8080) maquina.dominio.es:80 128.252.120.8:echo 128.252.120.8:echo(7) 128.252.120.8:7
El formato 
maquina.dominio.es:http(8080)
hace que IO::Socket::INET
intente primero el puerto asociado con el servicio y - si esto fracasa -
el explicitado entre paréntesis. El método intenta automáticamente
un  connect  a la máquina remota.
El ejemplo del cliente HTTP que sigue muestra un uso de new
con formato largo de llamada. La tabla resume los principales
argumentos:
| Argumento | Descripción | Ejemplo | 
| PeerAddr | Dirección remota | la.maquina.es:1026 | 
| PeerHost | Sinónimo de PeerAddr | 193.125.120.8:1026 | 
| PeerPort | Puerto remoto o servicio | echo(12) | 
| LocalAddr | Dirección local | la.maquina.es:1026 | 
| LocalHost | Sinónimo de LocalAddr | 193.125.120.8:1026 | 
| LocalPort | Puerto local | 127.0.0.1:http(80) | 
| Proto | Protocolo (nombre o número) | "tcp","udp",40, etc. | 
| Type | Tipo del socket | SOCK_STREAMoSOCK_DGRAM... | 
| Listen | Tamaño de la cola de escucha | un entero | 
| Reuse | Pone SO_REUSEADDR | un valor lógico | 
| Timeout | Plazo límite | un entero | 
| Multihomed | El host remoto tiene varias IP | un valor lógico | 
Los argumentos LocalAddr, LocalHost y LocalPort son usados por programas que actúan
como servidores. LocalAddr y LocalHost son sinónimos y 
especifican la IP asociada con una de las interfaces de red local.
Si el constructor de IO::Socket::INET detecta uno de estos argumentos
ejecutará un  bind  de la dirección al socket.
Si se especifica LocalPort y no se especifica LocalAddr
el constructor de
IO::Socket::INET binds al comodín 
 INADDR_ANY  permitiendo así al socket aceptar 
conexiones desde cualquiera de las interfaces de red.
 
