home *** CD-ROM | disk | FTP | other *** search
-
-
-
- SSSSoooocccckkkkeeeetttt((((3333)))) SSSSoooocccckkkkeeeetttt((((3333))))
-
-
-
- NNNNAAAAMMMMEEEE
- Socket, sockaddr_in, sockaddr_un, inet_aton, inet_ntoa - load the C
- socket.h defines and structure manipulators
-
- SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
- 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);
-
-
- DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
- This module is just a translation of the C _s_o_c_k_e_t._h file. Unlike the old
- mechanism of requiring a translated _s_o_c_k_e_t._p_h file, this uses the hhhh2222xxxxssss
- 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.
-
-
-
-
-
-
- PPPPaaaaggggeeee 1111
-
-
-
-
-
-
- SSSSoooocccckkkkeeeetttt((((3333)))) SSSSoooocccckkkkeeeetttt((((3333))))
-
-
-
- inet_ntoa IP_ADDRESS
- Takes a four byte ip address (as returned by _i_n_e_t__a_t_o_n()) 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 _i_n_e_t__a_t_o_n('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
- _i_n_e_t__a_t_o_n('255.255.255.255').
-
- INADDR_LOOPBACK
- Note - does not return a number.
-
- Returns the 4-byte loopback address. Normally equivalent to
- _i_n_e_t__a_t_o_n('localhost').
-
- INADDR_NONE
- Note - does not return a number.
-
- Returns the 4-byte 'invalid' ip address. Normally equivalent to
- _i_n_e_t__a_t_o_n('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 _p_a_c_k__s_o_c_k_a_d_d_r__i_n() and _u_n_p_a_c_k__s_o_c_k_a_d_d_r__i_n()
- explicitly.
-
- pack_sockaddr_in PORT, IP_ADDRESS
- Takes two arguments, a port number and a 4 byte IP_ADDRESS (as
- returned by _i_n_e_t__a_t_o_n()). 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 _b_i_n_d(), _c_o_n_n_e_c_t(), and _s_e_n_d(), and is also returned by
- _g_e_t_p_e_e_r_n_a_m_e(), _g_e_t_s_o_c_k_n_a_m_e() and _r_e_c_v().
-
-
-
-
- PPPPaaaaggggeeee 2222
-
-
-
-
-
-
- SSSSoooocccckkkkeeeetttt((((3333)))) SSSSoooocccckkkkeeeetttt((((3333))))
-
-
-
- unpack_sockaddr_in SOCKADDR_IN
- Takes a sockaddr_in structure (as returned by _p_a_c_k__s_o_c_k_a_d_d_r__i_n())
- 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 _p_a_c_k__s_o_c_k_a_d_d_r__u_n() and _u_n_p_a_c_k__s_o_c_k_a_d_d_r__u_n()
- explicitly. These are only supported if your system has <_s_y_s/_u_n._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 _b_i_n_d(), _c_o_n_n_e_c_t(), and _s_e_n_d(), and is also returned by
- _g_e_t_p_e_e_r_n_a_m_e(), _g_e_t_s_o_c_k_n_a_m_e() and _r_e_c_v().
-
- unpack_sockaddr_un SOCKADDR_UN
- Takes a sockaddr_un structure (as returned by _p_a_c_k__s_o_c_k_a_d_d_r__u_n())
- and returns the pathname. Will croak if the structure does not have
- AF_UNIX in the right place.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PPPPaaaaggggeeee 3333
-
-
-
-