Initializing a Socket
Both client and server use the socket call to create a socket and
associate it with a filehandle. The socket function takes several arguments:
the name of the filehandle, the network domain, an indication of
whether the socket is stream-oriented or record-oriented, and the
network protocol to be used. For example, HTTP (web) transactions
require stream-oriented connections running TCP. The following lines
create a socket for this case and associates it with the filehandle
SH:
use Socket;
socket(SH, PF_INET, SOCK_STREAM, getprotobyname('tcp')) || die $!;The PF_INET argument
indicates that the socket will connect to addresses in the Internet
domain (i.e., IP addresses). Sockets with a Unix domain address use
PF_UNIX.
Because this is a streaming connection using TCP, we specify
SOCK_STREAM for the second
argument. The alternative would be to specify SOCK_DGRAM for a packet-based UDP
connection.
The third argument indicates the protocol used for the
connection. Each protocol has a number assigned to it by the system;
that number is passed to socket
as the third argument. In the scalar context, getprotobyname returns the protocol
number.
Finally, if the socket call fails, the program will die, printing the error message found in
$!.