Hallo klawischnigg,
nee, is klar.
define('HOST_NAME',"localhost");
define('PORT',"8090");
// ...
$socketResource = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_set_option($socketResource, SOL_SOCKET, SO_REUSEADDR, 1);
socket_bind($socketResource, 0, PORT);
socket_listen($socketResource);
while (true) {
// ...
foreach (...) {
while(...) {
// ...
break 2;
}
}
}
socket_close($socketResource);
Mit diesem Script wird kein Indianer glücklich. Spätestens nach dem eingestellten Request-Timeout wird er sein Unglück mit der Axt über das Script ergießen und es ermorden.
Das ist PHP für die Shell, es enthält eine Endlosschleife ohne Ausgang. Den Socketserver hast Du sicherlich von der Kommandozeile aus gestartet und mit Strg+C oder anderen Brutalomaßnahmen beendet. Denn einen regulären Ausgang aus dem while(true) gips nich, der socket_close findet nie statt. Oder ich hab zu flüchtig geguckt und einen anderen break übersehen...
Der Client ist eine HTML Seite die ws://localhost:8090 anspricht. Serverseitig wurde das WS-Protokoll "von Hand" implementiert, ohne Library, ich bin überrascht, dass das so einfach geht.
Rolf
sumpsi - posui - obstruxi