use Socket; $proto = getprotobyname('udp'), socket(SOCK
, PF_INET, SOCK_DGRAM, $proto) or die "socket: $!"; $iaddr = gethostbyname('hishost.com'), $port = getservbyname('time', 'udp'), $sin = sockaddr_in($port, $iaddr); send(SOCK
, 0, 0, $sin) or die "send: $!"; $proto = getprotobyname('tcp'), socket(SOCK
, PF_INET, SOCK_STREAM, $proto) or die "socket: $!"; $port = getservbyname('smtp', 'tcp'), $sin = sockaddr_in($port,inet_aton("127.1")); $sin = sockaddr_in(7,inet_aton("localhost")); $sin = sockaddr_in(7,INADDR_LOOPBACK); connect(SOCK
,$sin) or die "connect: $!"; ($port, $iaddr) = sockaddr_in(getpeername(SOCK
)); $peer_host = gethostbyaddr($iaddr, AF_INET); $peer_addr = inet_ntoa($iaddr); $proto = getprotobyname('tcp'), socket(SOCK
, PF_UNIX, SOCK_STREAM, $proto) or die "connect: $!"; unlink('/tmp/usock'), # XXX: intentionally ignore failure $sun = sockaddr_un('/tmp/usock'), connect(SOCK
,$sun) or die "connect: $!"; use Socket qw(:DEFAULT :crlf); # Now you can use CR(), LF(), and CRLF() or # $CR, $LF, and $CRLF for line-endings.
The Socket
module provides access to
constants from the C library's sys/socket.h
#include
file to use with Perl's low-level socket
functions. It also provides two functions,
inet_aton
and inet_ntoa
, to
convert between ASCII (like "127.0.0.1") and packed network
representations of IP addresses, and two special packer/unpacker
functions, sockaddr_in
and
sockaddr_un
, which manipulate the binary socket
addresses needed by those low-level calls. The
:crlf
import tag gives symbolic names for the
various end-of-line conventions so you don't have to rely upon native
interpretations of
and
,
which vary. Most Internet protocols prefer CRLF but tolerate LF. The
standard IO::Socket
module provides a higher-level
interface to TCP. See Chapter
16.