Socket

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.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset