require Net::Daemon;
package Contdmon;
use vars qw(@ISA);
@ISA = qw(Net::Daemon); # to inherit from Net::Daem
####
sub new ($$;$) {
my($class, $attr, $args) = @_;
my($self) = $class->SUPER::new($attr, $args);
# set up the logfile
my $file = IO::File->new ( '/path', "a" );
$file->autoflush ( 1 ) ;
$self->{'logfile'} = $file;
$self;
}
####
sub Run ($) {
my($self) = @_;
my($line, $result, $sock);
$sock = $self->{'socket'};
while (1) {
if (!defined($line = $sock->getline())) {
if ($sock->error()) {
$self->Error("Client connection error %s",
$sock->error());
}
$sock->close();
return;
}
}
print "Server received request: $line\n";
}
####
package main;
my $args = {
'facility' => 'daemon',
'pidfile' => '/users/ccm_root/logs/contdaem.pid',
'logfile' => '/users/ccm_root/logs/contdaem.log',
'user' => 'ccm_root',
'group' => 'ccm_root',
'localport' => '5440',
'mode' => 'single',
};
my $server = Contdmon->new ({}, $args);
$server->Bind();
####
use strict;
use IO::Socket;
$| = 1; # flush output buffers immediately
my ( $host ) = 'server';
my ( $port ) = 1234;
# create the socket
my $sock = IO::Socket::INET->new ( Proto => 'tcp',
Type => SOCK_STREAM,
PeerAddr => $host,
PeerPort => $port )
or die "Cannot create socket : $!";
# so output goes to daemon immediately
$sock->autoflush (1);
print $sock "What is the time, Mr Wolf?\n";