my $protocol = getprotobyname('tcp'); socket(SOCK, AF_INET, SOCK_STREAM, $protocol) or die "No socket: $!"; setsockopt(SOCK, SOL_SOCKET, SO_REUSEADDR, 1) or die "No SO_REUSEADDR: $!"; my $my_addr = sockaddr_in($port, INADDR_ANY); bind(SOCK, $my_addr) or die "No bind: $!"; listen(SOCK,SOMAXCONN) or die "No listen: $!"; warn "listening on port $port...\n"; while ( 1 ) { next unless my $remote_addr = accept(SESSION, SOCK); my ($port, $hisaddr) = sockaddr_in($remote_addr); warn "Connection from [",inet_ntoa($hisaddr),",$port]\n"; SESSION->autoflush(1); while() { $bytes{'in'} += length($_); chomp; my $msg_out = scalar reverse $_ . "\n"; print SESSION $msg_out; $bytes{'out'} += length($msg_out); } warn "Connection from [",inet_ntoa($hisaddr),",$port] finished\n"; close SESSION; } close SOCK;