NAME
    Net::NBsocket -- Non-Blocking Sockets

SYNOPSIS
      use Net::NBsocket qw(
            open_udpNB
            open_listenNB
            connect_NB
            accept_NB
            set_NB
            set_so_linger
      );

      $sock = open_udpNB();
      $listener = open_listenNB($port_path,$netaddr);
      $rv = set_sockNB(*SOCK);
      $rv = set_so_linger(*HANDLE,$seconds);
      $client = connect_NB($port_path,$netaddr);
      ($sock,$netaddr) = accept_NB(*SERVER);
    
DESCRIPTION
    Net::NBsocket provides a wrapper for Socket to supply Non-Blocking
    sockets of various flavors;

    * $sock = open_udpNB();
        Open and return a non-blocking UDP socket object

          input:        none
          returns:      pointer to socket object
                        or undef on failure

    * $listener = open_listenNB($port_path);
        Open and return a non-blocking TCP listener bound to $port_path and
        an optional IPv4 bind address as returned by inet_aton (defaults to
        INADDR_ANY).

        Opens a unix-domain socket if port_path is a path instead of a
        number.

        The user must set the appropriate UMASK prior to calling this
        routine.

          input:        port or unix domain socket path,
                        [optional] bind address
          returns:      pointer to listening socket
                        object or undef on failure

    * $rv = set_sockNB(*SOCK);
        Set a socket to Non-Blocking mode

          input:        SOCK object pointer
          returns:      true on success or
                        undef on failure

    $rv = set_so_linger(*HANDLE,$seconds);
          Set SO_LINGER on top level socket

          input:        *HANDLE, seconds
          returns:      true = success, false = fail

    * $client = connect_NB($port_path,$netaddr);
        Begin a non-blocking TCP connection to the host designated by
        $netaddr on $port_path, or to the unix domain socket designated by
        the path in $port_path. $netaddr is unused for unix domain sockets.

          input:        port number or unix domain socket path,
                        netaddr as returned by inet_aton
          returns:      socket object or
                        undef on failure

    * ($sock,$netaddr) = accept_NB(*SERVER);
        Accept a connection from a remote client, return a non-blocking
        socket and the network address of the remote host as returned by
        inet_aton or the unix domain socket path if PF_INET or PF_UNIX
        respectively.

          input:        listening socket object
          returns:      client socket object,
                        client packed netaddr or
                        unix domain socket path
                        or an emtpy array on failure

DEPENDENCIES
            POSIX
            Socket

EXPORT_OK
            open_udpNB
            open_listenNB
            connect_NB
            accept_NB
            set_NB
            set_so_linger

AUTHOR
    Michael Robinton, michael@bizsystems.com

COPYRIGHT
    Copyright 2004, Michael Robinton & BizSystems This program is free
    software; you can redistribute it and/or modify it under the terms of
    the GNU General Public License as published by the Free Software
    Foundation; either version 2 of the License, or (at your option) any
    later version.

    This program is distributed in the hope that it will be useful, but
    WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
    Public License for more details.

    You should have received a copy of the GNU General Public License along
    with this program; if not, write to the Free Software Foundation, Inc.,
    59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

