home | O'Reilly's CD bookshelfs | FreeBSD | Linux | Cisco | Cisco Exam  


Book HomeJava and XSLTSearch this book

15.2. The IO::Socket Module

The IO::Socket module included in the core Perl distribution provides an object-oriented approach to socket programming. This module provides a convenient way to handle the large number of options you have to deal with, and it handles the laborious task of forming addresses. IO::Socket is built upon the Socket module provided in the standard library. It inherits from IO::Handle, which supports a class of filehandle objects for much of the IO library. The following IO::Socket functions are simply frontends for the corresponding built-in functions and use the same syntax:

socket
socketpair
bind
listen
send
recv
peername (same as getpeername)
sockname (same as getsockname)

The accept function in IO::Socket is slightly different from the equivalent function, however, and is described later in the chapter.

IO:Socket contains two subclasses: INET and UNIX. The INET subclass is used to create and manipulate Internet-domain sockets, such as those used in the examples. The UNIX subclass creates Unix domain sockets.

15.2.3. IO::Socket Methods

The following methods are defined in IO::Socket and can be used on socket objects of either the INET or UNIX class.

15.2.4. IO::Socket::INET Reference

An Internet-domain socket is created with the new method from the IO::Socket::INET subclass. The constructor can take the following options:

PeerAddr => hostname[:port]
Specifies the remote host and optional port number for a client connection. hostname can be either a name, such as www.oreilly.com, or an IP number of the form 207.44.21.2.

PeerPort => port
Specifies the port number on the remote host for a client connection. The name of the service (such as http or nntp) may be used for the argument if the port number is not known.

LocalAddr => hostname[:port]
Specifies the local address (and optional port number) to bind to a server-side socket.

LocalPort => port
Specifies the local port number (or service name) to bind to a server-side socket.

Proto => name
Specifies the protocol to be run on the socket, i.e., tcp or udp.

Type => SOCK_STREAM | SOCK_DGRAM
Specifies the type of socket. SOCK_STREAM indicates a stream-based socket connection, and SOCK_DGRAM indicates a message-based (datagram) connection.

Listen => n
Sets the listen-queue size to n number of client requests.

Reuse => 1
Given a nonzero number, this option allows the local bind address to be reused should the socket need to be reopened after an error.

Timeout => n
Sets the timeout.

Whether a server (receiving) or client (requesting) socket is created depends on the parameters provided to the constructor. If Listen is defined, a server socket is automatically created. If no protocol is specified, it is derived from the service on the given port number. If no port number is given, tcp is used by default.



Library Navigation Links

Copyright © 2002 O'Reilly & Associates. All rights reserved.