#!/usr/bin/perl5.003
#
#  Listing 2.
#
#  Code to illustrate asynchronous communication.
#
require 5.002;
use strict;
use Socket;
use Fcntl;
my $livesocket = 0;
# IO signal handler
sub getsock {
    $livesocket = 1;
}
$SIG{IO} = \&getsock;
my( $proto, $port, $F_SETOWN, $FASYNC );
$port = 6789;
$proto = getprotobyname( 'tcp' );
# Create an Internet protocol socket.
socket( S, AF_INET, SOCK_STREAM, $proto )   or  die "socket:$!";
bind( S, sockaddr_in( $port, INADDR_ANY) );
listen( S, 5 );
#
# Use fcntl to set up the program to accept IO signal when the
# events occur on the socket.
#
$F_SETOWN = 8;
$FASYNC = 020000;
fcntl( S, $F_SETOWN, $$ );
fcntl( S, &F_SETFL, $FASYNC );
while( 1 ){
   if($livesocket) {
       print "Signal fired\n";
       accept NS, S;
       select(NS); $| = 1; select(STDOUT);
       print NS "Some message\n";
       $livesocket = 0;
       close NS;
   }
   # do some stuff ...
}
exit;
  
  
  
  
  
  
  
  
  
    Copyright © 1994 - 2014 Linux Journal.  All rights reserved.