
Net::NBsocket -- Non-Blocking Sockets

use Net::NBsocket qw(
open_UDP
open_udpNB
open_Listen
open_listenNB
connectBlk
connect_NB
accept_Blk
accept_NB
set_NB
set_so_linger
inet_aton
inet_ntoa
sockaddr_in
sockaddr_un
);
$sock = open_UDP();
$sock = open_udpNB();
DEPRECATED $sock = bind2pp($sock,$port_path,$netaddr);
$listener = open_Listen($port_path,$netaddr);
$listener = open_listenNB($port_path,$netaddr);
$rv = set_NB(*SOCK);
$rv = set_so_linger(*HANDLE,$seconds);
$client = connectBlk($port_path,$netaddr);
$client = connect_NB($port_path,$netaddr);
($sock,$netaddr) = accept_Blk(*SERVER);
($sock,$netaddr) = accept_NB(*SERVER);
$netaddr = inet_aton($dot_quad);
$dot_quad = inet_ntoa($netaddr);
$sin = sockaddr_in($port,$netaddr);
($port,$netaddr) = sockaddr_in($sin);
$sun = sockaddr_un($path);
($path) = sockaddr_un($sun);

Net::NBsocket provides a wrapper for Socket to supply Non-Blocking sockets of various flavors;
All above exported from Socket in the EXPORT_OK array.
Open an unbound UDP socket as below.
Open and return an unbound non-blocking UDP socket object
input: none
returns: pointer to socket object
or undef on failure
Bind to $port_path and an optional IPv4 bind address as returned by inet_aton (defaults to INADDR_ANY).
input: port or unix domain socket path,
[optional] bind address
returns: socket on sucess, else undef;
Author's note: This function was not well thought out and is now deprecated. It may be removed in future versions and is no longer in the EXPORT_OK array though it is still in the module and may be accessed with Net::NBsocket::bind2pp();
Open a blocking TCP listner as below.
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
Set a socket to Non-Blocking mode
input: SOCK object pointer
returns: true on success or
undef on failure
Set SO_LINGER on top level socket input: *HANDLE, seconds returns: true = success, false = fail
Begin a blocking TCP connection as below.
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
Accept a connection and return a BLOCKING socket as below.
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

POSIX
Socket

open_UDP
open_udpNB
open_Listen
open_listenNB
connectBlk
connect_NB
accept_Blk
accept_NB
set_NB
set_so_linger
inet_aton
inet_ntoa
sockaddr_in
sockaddr_un

Michael Robinton, michael@bizsystems.com

Copyright 2004 - 2006, 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.
