[perl]代码库
#-----------------------------
use IO::Socket;
$server = IO::Socket::INET->new ( LocalPort => $server_port,
Type => SOCK_STREAM,
Reuse => 1,
Listen => 10 ) # or SOMAXCONN
or die "Couldn't be a tcp server on port $server_port : $@\n";
while ( $client = $server->accept() )
{
# $client is the new connection
}
close ( $server );
#-----------------------------
use Socket;
# make the socket
socket ( SERVER, PF_INET, SOCK_STREAM, getprotobyname ( 'tcp' ) );
# so we can restart our server quickly
setsockopt ( SERVER, SOL_SOCKET, SO_REUSEADDR, 1 );
# build up my socket address
$my_addr = sockaddr_in ( $server_port, INADDR_ANY );
bind ( SERVER, $my_addr )
or die "Couldn't bind to port $server_port : $!\n";
# establish a queue for incoming connections
listen ( SERVER, SOMAXCONN )
or die "Couldn't listen on port $server_port : $!\n";
# accept and process connections
while ( accept ( CLIENT, SERVER ) )
{
# do something with CLIENT
}
close ( SERVER );
#-----------------------------
use Socket;
while ( $client_address = accept ( CLIENT, SERVER ) )
{
( $port, $packed_ip ) = sockaddr_in ( $client_address );
$dotted_quad = inet_ntoa ( $packed_ip );
# do as thou wilt
}
#-----------------------------
while ( $client = $server->accept() )
{
# ...
}
#-----------------------------
while ( ( $client,$client_address ) = $server->accept() )
{
# ...
}
#-----------------------------
use Fcntl qw ( F_GETFL F_SETFL O_NONBLOCK );
$flags = fcntl ( SERVER, F_GETFL, 0 )
or die "Can't get flags for the socket: $!\n";
$flags = fcntl ( SERVER, F_SETFL, $flags | O_NONBLOCK )
or die "Can't set flags for the socket: $!\n";
#-----------------------------