Steckdose funktioniert nicht PHP
Hier ist mein 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);
?>
und jetzt werden die Fehler
Warning: socket_bind() [function.socket-bind]: unable to bind address [0]: Nur ein jede Socketadresse (Protokoll-Netzwerk-Adresse/Anschluss) normalerweise darf verwendet werden. in C:\wamp\www\socket\socket.php on line 18 socket_bind() fehlgeschlagen: Grund: Nur ein jede Socketadresse (Protokoll-Netzwerk-Adresse/Anschluss) normalerweise darf verwendet werden. Warnung: socket_listen() [function.socket-listen]: unable to listen on socket [0]: Ein ungültiges argument wurde angegeben. in C:\wamp\www\socket\socket.php on line 22 socket_listen() fehlgeschlagen: Grund: Ein ungültiges argument wurde angegeben. Warnung: socket_accept() [function.socket-accept]: unable to accept incoming connection [0]: Ein ungültiges argument wurde angegeben. in C:\wamp\www\socket\socket.php on line 27 socket_accept() fehlgeschlagen: Grund: Ein ungültiges argument wurde angegeben.
Ich in google gesucht aber nichts brauchbares.
Was ist das problem?
InformationsquelleAutor | 2009-03-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
PHP bietet auch stream_socket_server und andere stream_socket_* Funktionen.
Ich fand diese mehr Entwickler freundlich.
Beispiel-code aus php.net:
InformationsquelleAutor Bob Fanger
'localhost' ist keine gültige Adresse als socket_bind nicht akzeptieren DNS-Namen die entsprechende IP-Adresse '127.0.0.1' verwendet.
Mehr info
InformationsquelleAutor brian-brazil
Das bedeutet, dass Sie bereits eine offene Buchse an Ihrem computer an diesem port.
Versuchen Sie die Umstellung zu einem anderen, unbenutzten port.
Unter Windows (das ist, was Sie zu sein scheinen in Arbeit), können Sie sehen, die Liste der offenen sockets von der Befehlszeile aus:
Wenn Sie wissen möchten, welche Prozesse sind zu hören die ports, versuchen Sie dies statt:
InformationsquelleAutor Seb
verwenden Sie diesen code, bevor Sie eine Bindung:
Referenz http://www.php.net/manual/en/function.socket-bind.php
Können Sie auch überprüfen, http://www.php.net/manual/en/function.socket-set-option.php für details
InformationsquelleAutor IR4N0nY