#!/usr/bin/perl -w use strict; use integer; use Socket; my $port = 50000; # Port to bind to my $FORK = 0; # Do we fork? my $match = sprintf "\x05"; my $proto = getprotobyname('tcp'); socket(SERVER, PF_INET, SOCK_STREAM, $proto) or die "socket:$!"; setsockopt(SERVER, SOL_SOCKET, SO_REUSEADDR, pack("l", 1)) or die "setsockopt: $!"; bind(SERVER, sockaddr_in($port, INADDR_ANY)) or die "bind: $!"; listen(SERVER, SOMAXCONN) or die "listen: $!"; if($FORK) { my $pid = fork(); die "fork: $!" if $pid < 0; exit if $pid; } for(;my $paddr=accept(CLIENT, SERVER); close CLIENT) { my ($ver,$nm,$methods) = (); recv(CLIENT,$ver,1,0); recv(CLIENT,$nm,1,0); if(($ver eq $match) && $nm) { my $char=ord($nm); print "Okay, getting $char methods\n"; recv(CLIENT,$methods,$char,0); print "Got [$methods]\n"; } } exit;