Net::TCP::Server(3) User Contributed Perl Documentation Net::TCP::Server(3)NAMENet::TCP::Server - TCP sockets interface module for listeners and
servers
SYNOPSIS
use Net::Gen; # optional
use Net::Inet; # optional
use Net::TCP; # optional
use Net::TCP::Server;
DESCRIPTION
The "Net::TCP::Server" module provides services for TCP communications
over sockets. It is layered atop the "Net::TCP", "Net::Inet", and
"Net::Gen" modules, which are part of the same distribution.
Public Methods
The following methods are provided by the "Net::TCP::Server" module
itself, rather than just being inherited from "Net::TCP", "Net::Inet",
or "Net::Gen".
new Usage:
$obj = new Net::TCP::Server;
$obj = new Net::TCP::Server $service;
$obj = new Net::TCP::Server $service, \%parameters;
$obj = new Net::TCP::Server $lcladdr, $service, \%parameters;
$obj = 'Net::TCP::Server'->new();
$obj = 'Net::TCP::Server'->new($service);
$obj = 'Net::TCP::Server'->new($service, \%parameters);
$obj = 'Net::TCP::Server'->new($lcladdr, $service, \%parameters);
Returns a newly-initialised object of the given class. This is
much like the regular "new" method of the other modules in this
distribution, except that it makes it easier to specify just a ser-
vice name or port number, and it automatically does a setsockopt()
call to set "SO_REUSEADDR" to make the bind() more likely to suc-
ceed. The "SO_REUSEADDR" is really done in a base class, but it's
enabled by defaulting the "reuseaddr" object parameter to 1 in this
constructor.
The examples above show the indirect object syntax which many pre-
fer, as well as the guaranteed-to-be-safe static method call.
There are occasional problems with the indirect object syntax,
which tend to be rather obscure when encountered. See
http://www.xray.mpe.mpg.de/mail-
ing-lists/perl5-porters/1998-01/msg01674.html for details.
Simple example for server setup:
$lh = 'Net::TCP::Server'->new(7788) or die;
while ($sh = $lh->accept) {
defined($pid=fork) or die "fork: $!\n";
if ($pid) { # parent doesn't need client fh
$sh->stopio;
next;
}
# child doesn't need listener fh
$lh->stopio;
# do per-connection stuff here
exit;
}
Note that signal-handling for the child processes is not included
in this example. See "Internet TCP Clients and Servers" in perlipc
for related examples which manage subprocesses. However, on many
operating systems, a simple "$SIG{CHLD} = 'IGNORE';" will prevent
the server process from collecting `zombie' subprocesses.
Protected Methods
none.
Known Socket Options
There are no socket options specific to the "Net::TCP::Server" module.
Known Object Parameters
There are no object parameters registered by the "Net::TCP::Server"
module itself.
Exports
default
none
exportable
none
tags
none
THREADING STATUS
This module has been tested with threaded perls, and should be as
thread-safe as perl itself. (As of 5.005_03 and 5.005_57, that's not
all that safe just yet.) It also works with interpreter-based threads
('ithreads') in more recent perl releases.
SEE ALSONet::TCP(3), Net::Inet(3), Net::Gen(3)AUTHOR
Spider Boardman <spidb@cpan.org>
perl v5.8.8 2007-10-29 Net::TCP::Server(3)