IO::Socket
use IO::Socket;
As a client:
$socket = new IO::Socket::INET (PeerAddr => $remote_host, PeerPort => $remote_port, Proto => "tcp", Type => SOCK_STREAM) or die "Can't connect to $remote_host:$remote_port : $!\n";# Or use the simpler single-argument interface. $socket = IO::Socket::INET->new("$remote_host:$remote_port"); # "localhost:80", for example. print $socket "data\n"; $line = <$socket>;
As a server:
$server = IO::Socket::INET->new(LocalPort => $server_port, Type => SOCK_STREAM, Reuse => 1, Listen => 10 ) # or SOMAXCONN or die "Can't be a TCP server on port $server_port : $!\n";while ($client = $server->accept()) { # $client is the new connection $request = <$client>; print $client "answer\n"; close $client; } # Make simple TCP connecting function that returns a filehandle # for use in simple client programs. sub tcp_connect { my ($host, $service) = @_; require IO::Socket; return IO::Socket::INET->new(join ":", $host, $service); } my $fh = tcp_connect("localhost", "smtp"); # with scalar local *FH = tcp_connect("localhost", "smtp"); # with handle
The IO::Socket
module
provides a higher-level approach to socket handling than the raw
Socket
module. You may use it in an object-oriented
fashion, although this isn't mandatory, because the return values are
proper filehandles and may be used as such, as shown in the
tcp_connect
function in the example. This module
inherits methods from IO::Handle
, and itself
requires IO::Socket::INET
and
IO::Socket::UNIX
. See the description of ...
Get Programming Perl, 3rd Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.