Perl Serveur TCP gérer plusieurs connexions Client

Je vais commencer en disant que j'ai très peu d'expérience avec les deux Perl et la programmation Socket, donc j'apprécie toute l'aide que je peux obtenir. J'ai un Serveur TCP qui doit gérer plusieurs connexions simultanément et être en mesure de recevoir des données à partir de l'un des Clients à tout moment et également être en mesure d'envoyer des données vers les Clients sur la base des informations qu'il est reçu. Par exemple, Client1 et Client2 se connecter à mon Serveur. Client2 envoie "Prêt", le serveur qui interprète et l'envoie sur "Go" pour Client1. Ce qui suit est ce que j'ai écrit jusqu'à présent:

my $sock = new IO::Socket::INET 
{
    LocalHost => $host, //defined earlier in code
    LocalPort => $port, // defined earlier in code
    Proto => 'tcp',
    Listen => SOMAXCONN,
    Reuse => 1,
};
die "Could not create socket $!\n" unless $sock;

while ( my ($new_sock,$c_addr) = $sock->accept() ) {
    my ($client_port, $c_ip) = sockaddr_in($c_addr);
    my $client_ipnum = inet_ntoa($c_ip);
    my $client_host = "";

    my @threads;

    print "got a connection from $client_host", "[$client_ipnum]\n";
    my $command;
    my $data;

    while ($data = <$new_sock>) {
        push @threads, async \&Execute, $data;
    }
}

sub Execute {
    my ($command) = @_;

    //if($command) = "test"
    // send "go" to socket1

    print "Executing command: $command\n";
    system($command);
}

Je sais que mes deux boucles while sera de blocage et j'ai besoin d'un moyen de mettre en œuvre mes accepter le commandement comme un fil, mais je ne suis pas sûr de la bonne façon de l'écrire.

InformationsquelleAutor Matt | 2011-01-31