#!/usr/local/bin/perl use strict; use English; use FileHandle; use Socket; my $proto = getprotobyname('tcp'); socket(SERVER, PF_INET, SOCK_STREAM, $proto) or die "socket: $!\n"; print "socket\n"; my $port = 7200; my $sockaddr = sockaddr_in($port, INADDR_ANY); bind(SERVER, $sockaddr) or die "bind: $!\n"; print "bind\n"; listen(SERVER, SOMAXCONN) or die "listen: $!\n"; print "listen\n"; for (;;) { my $sockaddr = accept(HANDLER, SERVER) or die "accept: $!\n"; my($port, $ip_addr) = sockaddr_in($sockaddr); my $host = gethostbyaddr($ip_addr, AF_INET); print "accept $host:$port\n"; Reverse(); close HANDLER or die "close HANDLER: $!\n"; print "close HANDLER\n"; } sub Reverse { autoflush HANDLER 1; while () { chomp; my $reverse = reverse $_; print HANDLER "$reverse\n"; } } __END__ =head1 NAME reverseS - line reverse server =head1 SYNOPSIS B =head1 DESCRIPTION B is a simple TCP server. It listens on TCP port 7800 for incoming connections. For each connection, it reads lines from the client, reverses the line, and sends it back to the client. =head1 REQUIRES =over 4 =item * English =item * FileHandle =item * Socket =back =head1 BUGS =over 4 =item * It can only handle one client at a time. =item * The only way to exit the server is to kill it, e.g. with ^C. =item * It is very silly. =back =head1 AUTHOR Steven McDougall, swmcd@world.std.com =head1 COPYRIGHT Copyright 2000 by Steven McDougall. This program is free software; you can redistribute it and/or modify it under the same terms as Perl.