server/comm-socket.pl

47 lines
679 B
Perl

#!/usr/bin/env perl
use v5.10.1;
use IO::Select;
use IO::Socket::UNIX;
use threads;
die("Give at least the socket file as argument") if (! @ARGV);
my $sock_path = shift @ARGV;
my $socket = IO::Socket::UNIX->new(
Type => SOCK_STREAM,
Peer => $sock_path,
);
die "Can't read socket ($sock_path): $!" unless $socket;
if (@ARGV)
{
while (my $arg = shift @ARGV)
{
say $socket $arg;
}
}
my $s = IO::Select->new();
$s->add(\*STDIN);
$s->add($socket);
while ($s->count())
{
for my $rd ($s->can_read(0.25))
{
my $line = <$rd>;
chomp($line);
if ($rd == \*STDIN) {
say $socket $line;
}
elsif ($rd == $socket) {
say $line;
}
}
}