Mailinglisten-Archive |
Hallo! Ich versuche zur Zeit, aus einer rehct großen Funktionsbibliothek einen eigenen server zu bauen, der über Socketverbindungen abgefragt werden kann. Das Script wartet also per accept_connect() auf einen socket-request, verarbeitet diesen und gibt das Ergebnis zurück. Über Telnet funktioniert das auch problemlos, ich kann mich mit dem SCript verbinden und Abfragen abschicken. Jetzt versuche ich aber eine Abfrage über ein Client-Script. Hierbei wird keine Ausgabe an das Script zurückgegeben. Hier die entscheidenden Teile der beiden scripts: Server: // Socket wurde erstellt, bind & listen ausgeführt do { if (($msgsock = accept_connect($sock)) < 0) { echo "accept_connect() failed: reason: " . strerror ($msgsock) . "\n"; Warten auf request break; } do { $buf = ''; $ret = read ($msgsock, $buf, 2048); // request auslesen echo "request: $ret <br>"; if ($ret < 0) { echo "read() failed: reason: " . strerror ($ret) . "\n"; break 2; } if ($ret == 0) { break 2; } $buf = trim ($buf); $talkback = eval($buf); // request verabeiten write ($msgsock, $talkback, strlen ($talkback)); // ergebnis zurückschreiben echo "$buf\n"; } while (true); close ($msgsock); } while (true); Client: // Socket wurde bereits erstellt, Senden des requests write ($socket, $in, strlen ($in)); while (read ($socket, $out, "\t")) // Auslesen der Response { echo $out; } Ich vermute, das Problem liegt jeweils an der Begrenzung der read und write anweisungen. Die genaue Länge eines eingehenden requests ist ja unbekannt, daher vermute ich, es müßte ein eindeutiges Steuerzeichen festgelegt werden. Ich habe aber sowohl mit \0, \n als auch \t die laut manual verwendet werden können kein Ergebnis erzielen können. Wie gesagt: per Telnet funktioniert es wunderbar, nur das Script bekommt keine Antwort zurück, obwohl die Verbindung erfolgreich hergestellt wird. Vielen Dank für alle Antworten, ich hoffe, ich konnte das Problem einigermaßen verständlich schildern. --kr -- GMX - Die Kommunikationsplattform im Internet. http://www.gmx.net
php::bar PHP Wiki - Listenarchive