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.
Vous devez vous connecter pour publier un commentaire.
Soit fourche, fil ou puis-je/O multiplexage avec select. Jetez un oeil à Net::Serveur et AnyEvent::Socket, trop. Pour un exemple d'I/O, de multiplexage, de prendre un coup d'oeil à Comment puis-je accepter de multiples connexions TCP en Perl?.