URL: https://linuxfr.org/forums/programmation-perl/posts/php-client-perl-serveur-communication-socket Title: PHP client -> Perl serveur (communication socket) Authors: David Date: 2012年05月24日T12:14:38+02:00 Tags: php, perl et socket Score: 1 Bonjour J'aimerais faire appel à un script PERL qui écoute sur un port via un script PHP. Je ne suis pas loin du résultat (test pour le moment) Le problème est que ma page php (pour le moment lancé en CLI) bloque au socket_read() . A savoir que sur le serveur quand je remplace <$client> par "toto" ça roule de bout en bout mais dès que j'essaye de lire <$client> ça bloque... Une idée lumineuse? Une piste? Note : j'ai fait un client Perl pour tester le serveur Perl et ça communique bien... Le client (PHP) : Le serveur (Perl) : #!/usr/bin/perl use warnings; use IO::Socket; use Net::hostent; # Variable my $PORT = 6969; my $RESTRICTION_HOST="localhost"; sub logmsg { print "[", scalar localtime, "] - [$$] : @_ \n" } sub start { my $serveur = IO::Socket::INET->new(LocalPort => $PORT, Type => SOCK_STREAM, Reuse => 1, Listen => 10) or die "Impossible serveur tcp sur le port $PORT : $@\n"; logmsg "0ドル démarré sur le port $PORT"; while (my $client = $serveur->accept()) { $hostinfo = gethostbyaddr($client->peeraddr); # Sécurité if ($hostinfo->name ne $RESTRICTION_HOST) { print $client "Accès refusé, Contactez votre administrateur réseau.\n"; logmsg "[HACK] Tentative de connexion via ", $hostinfo->name; close $client; } else { if (my $pid = fork) { close($serveur); logmsg "Debut de connexion via ", $hostinfo->name; # Avec ça le client bloque... my $arg = <$client>; # Avec ça le client tourne #my $arg = "toto"; logmsg "argument client : $arg"; my $retour = `id`; # Envoi du retour sur le client print $client $retour; close($client); logmsg "Fin de connexion via " , $hostinfo->name; } } } $SIG{CHLD} = 'IGNORE'; } start(); __END__

AltStyle によって変換されたページ (->オリジナル) /