Prise ne fonctionne pas PHP
Voici mon code
<?php
error_reporting(E_ALL);
/* Allow the script to hang around waiting for connections. */
set_time_limit(0);
/* Turn on implicit output flushing so we see what we're getting
* as it comes in. */
ob_implicit_flush();
$address = 'localhost';
$port = 10000;
if (($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) === false) {
echo "socket_create() failed: reason: " . socket_strerror(socket_last_error()) . "\n";
}
if (socket_bind($sock, $address, $port) === false) {
echo "socket_bind() failed: reason: " . socket_strerror(socket_last_error($sock)) . "\n";
}
if (socket_listen($sock, 5) === false) {
echo "socket_listen() failed: reason: " . socket_strerror(socket_last_error($sock)) . "\n";
}
do {
if (($msgsock = socket_accept($sock)) === false) {
echo "socket_accept() failed: reason: " . socket_strerror(socket_last_error($sock)) . "\n";
break;
}
do {
$out = socket_read($msgsock, 2048);
if (!empty($out)) {
if ($out == 'quit') {
break;
}
elseif ($out == 'shutdown') {
socket_write($msgsock, 'plc down', 8);
socket_close($msgsock);
break 2;
}
else {
switch ($out) {
case "KABBE": $response = "Kabbe te!"; break;
case "SZOPJ": $response = "Szopjal te!"; break;
default: $response = "Ismeretlen parancs";
}
socket_write($msgsock, $response, strlen($response));
break;
}
}
} while (true);
socket_close($msgsock);
} while (true);
socket_close($sock);
?>
et maintenant, les erreurs
Avertissement: socket_bind() [function.socket bind]: impossible de lier l'adresse [0]: une Seule utilisation de chaque adresse de socket (protocole/adresse réseau/port) est habituellement autorisée. dans C:\wamp\www\socket\socket.php sur la ligne 18 socket_bind() a échoué: raison: une Seule utilisation de chaque adresse de socket (protocole/adresse réseau/port) est habituellement autorisée. Avertissement: socket_listen() [function.socket-écouter]: impossible d'écouter sur socket [0]: Un argument non valide a été fourni. dans C:\wamp\www\socket\socket.php sur la ligne 22 socket_listen() a échoué: raison: Un argument non valide a été fourni. Avertissement: socket_accept() [function.socket accept]: impossible d'accepter la connexion entrante [0]: Un argument non valide a été fourni. dans C:\wamp\www\socket\socket.php sur la ligne 27 socket_accept() a échoué: raison: Un argument non valide a été fourni.
J'ai cherché sur google mais rien d'utile.
Quel est le problème?
Vous devez vous connecter pour publier un commentaire.
PHP propose également stream_socket_server et d'autres stream_socket_* les fonctions.
J'ai trouvé ces plus développeur sympathique.
Exemple de code à partir de php.net:
'localhost' n'est pas une adresse valide socket_bind n'accepte pas les noms DNS, utilisez l'équivalent de l'adresse IP '127.0.0.1'.
Plus d'infos
Cela signifie que vous avez déjà un socket ouvert sur votre ordinateur sur ce port.
Essayez de passer à un port inutilisé.
Sur Windows (qui est ce que vous semblez travail), vous pouvez voir la liste des sockets ouverts à partir de la ligne de commande:
Si vous voulez savoir quels processus sont à l'écoute de ces ports, essayez plutôt ceci:
utiliser ce code avant de liaison:
de référence http://www.php.net/manual/en/function.socket-bind.php
Vous pouvez également vérifier http://www.php.net/manual/en/function.socket-set-option.php pour plus de détails