Socket(3)

Socket(3)

snprintf Home Page Subroutines Index SplitList


NNAAMMEE
       Socket, sockaddr_in, sockaddr_un, inet_aton, inet_ntoa -
       load the C socket.h defines and structure manipulators

SSYYNNOOPPSSIISS
           use Socket;

           $proto = getprotobyname('udp');
           socket(Socket_Handle, PF_INET, SOCK_DGRAM, $proto);
           $iaddr = gethostbyname('hishost.com');
           $port = getservbyname('time', 'udp');
           $sin = sockaddr_in($port, $iaddr);
           send(Socket_Handle, 0, 0, $sin);

           $proto = getprotobyname('tcp');
           socket(Socket_Handle, PF_INET, SOCK_STREAM, $proto);
           $port = getservbyname('smtp');
           $sin = sockaddr_in($port,inet_aton("127.1"));
           $sin = sockaddr_in(7,inet_aton("localhost"));
           $sin = sockaddr_in(7,INADDR_LOOPBACK);
           connect(Socket_Handle,$sin);

           ($port, $iaddr) = sockaddr_in(getpeername(Socket_Handle));
           $peer_host = gethostbyaddr($iaddr, AF_INET);
           $peer_addr = inet_ntoa($iaddr);

           $proto = getprotobyname('tcp');
           socket(Socket_Handle, PF_UNIX, SOCK_STREAM, $proto);
           unlink('/tmp/usock');
           $sun = sockaddr_un('/tmp/usock');
           connect(Socket_Handle,$sun);

DDEESSCCRRIIPPTTIIOONN
       This module is just a translation of the C socket.h file.
       Unlike the old mechanism of requiring a translated
       socket.ph file, this uses the hh22xxss program (see the Perl
       source distribution) and your native C compiler.  This
       means that it has a far more likely chance of getting the
       numbers right.  This includes all of the commonly used
       pound-defines like AF_INET, SOCK_STREAM, etc.

       In addition, some structure manipulation functions are
       available:

       inet_aton HOSTNAME
            Takes a string giving the name of a host, and
            translates that to the 4-byte string (structure).
            Takes arguments of both the 'rtfm.mit.edu' type and
            '18.181.0.24'. If the host name cannot be resolved,
            returns undef. For multi-homed hosts (hosts with more
            than one address), the first address found is
            returned.

       inet_ntoa IP_ADDRESS
            Takes a four byte ip address (as returned by
            inet_aton()) and translates it into a string of the
            form 'd.d.d.d' where the 'd's are numbers less than
            256 (the normal readable four dotted number notation
            for internet addresses).

       INADDR_ANY
            Note: does not return a number, but a packed string.

            Returns the 4-byte wildcard ip address which
            specifies any of the hosts ip addresses. (A
            particular machine can have more than one ip address,
            each address corresponding to a particular network
            interface. This wildcard address allows you to bind
            to all of them simultaneously.)  Normally equivalent
            to inet_aton('0.0.0.0').

       INADDR_BROADCAST
            Note: does not return a number, but a packed string.

            Returns the 4-byte 'this-lan' ip broadcast address.
            This can be useful for some protocols to solicit
            information from all servers on the same LAN cable.
            Normally equivalent to inet_aton('255.255.255.255').

       INADDR_LOOPBACK
            Note - does not return a number.

            Returns the 4-byte loopback address. Normally
            equivalent to inet_aton('localhost').

       INADDR_NONE
            Note - does not return a number.

            Returns the 4-byte 'invalid' ip address. Normally
            equivalent to inet_aton('255.255.255.255').

       sockaddr_in PORT, ADDRESS

       sockaddr_in SOCKADDR_IN
            In an array context, unpacks its SOCKADDR_IN argument
            and returns an array consisting of (PORT, ADDRESS).
            In a scalar context, packs its (PORT, ADDRESS)
            arguments as a SOCKADDR_IN and returns it.  If this
            is confusing, use pack_sockaddr_in() and
            unpack_sockaddr_in() explicitly.

       pack_sockaddr_in PORT, IP_ADDRESS
            Takes two arguments, a port number and a 4 byte
            IP_ADDRESS (as returned by inet_aton()). Returns the
            sockaddr_in structure with those arguments packed in
            with AF_INET filled in.  For internet domain sockets,
            this structure is normally what you need for the

            arguments in bind(), connect(), and send(), and is
            also returned by getpeername(), getsockname() and
            recv().

       unpack_sockaddr_in SOCKADDR_IN
            Takes a sockaddr_in structure (as returned by
            pack_sockaddr_in()) and returns an array of two
            elements: the port and the 4-byte ip-address.  Will
            croak if the structure does not have AF_INET in the
            right place.

       sockaddr_un PATHNAME

       sockaddr_un SOCKADDR_UN
            In an array context, unpacks its SOCKADDR_UN argument
            and returns an array consisting of (PATHNAME).  In a
            scalar context, packs its PATHNAME arguments as a
            SOCKADDR_UN and returns it.  If this is confusing,
            use pack_sockaddr_un() and unpack_sockaddr_un()
            explicitly.  These are only supported if your system
            has <sys/un.h>.

       pack_sockaddr_un PATH
            Takes one argument, a pathname. Returns the
            sockaddr_un structure with that path packed in with
            AF_UNIX filled in. For unix domain sockets, this
            structure is normally what you need for the arguments
            in bind(), connect(), and send(), and is also
            returned by getpeername(), getsockname() and recv().

       unpack_sockaddr_un SOCKADDR_UN
            Takes a sockaddr_un structure (as returned by
            pack_sockaddr_un()) and returns the pathname.  Will
            croak if the structure does not have AF_UNIX in the
            right place.


snprintf Home Page Subroutines Index SplitList