perl:forking_server
# Tyler Bletsch use IO::Socket; # Will listen on $listenPort my $sockListen = new IO::Socket::INET (LocalPort => $listenPort, Proto => 'tcp', Listen => 1000, Reuse => 1); die "Could not create socket: $!\n" unless $sockListen; print "Listening on port $listenPort.\n"; while (1) { print "Waiting to accept on port $listenPort...\n"; $sockClient = $sockListen->accept(); # Get next client $clientSockAddr = $sockClient->peername(); ($clientPort, $clientAddr) = sockaddr_in($clientSockAddr); $clientHost = gethostbyaddr($clientAddr, AF_INET); $clientIP = inet_ntoa($clientAddr); if (!$clientHost) { print "Connected to $clientIP, local port $clientPort!\n"; } elsif ($clientHost eq $clientIP) { print "Connected to $clientHost, local port $clientPort!\n"; } else { print "Connected to $clientHost ($clientIP), local port $clientPort!\n"; } my $pid = fork(); die "Cannot fork '$!'" unless defined $pid; if ($pid) { # Parent close $sockClient; next; } # Child ### DO STUFF WITH $sockClient #print $sockClient scalar localtime; # Uncomment to make this a simple time server close $sockClient; exit; }
perl/forking_server.txt · Last modified: 2009/08/13 09:56 by tkbletsc