socket_read() doet raar
Geplaatst: 03 nov 2005, 17:12
Als ik socket_read() gebruik samen met PHP_NORMAL_READ, dan krijg ik meestal een rare error. Hoewel het mooi zou moeten werken volgens php.net.
De opstelling is als volgt. Er draait een zelfgeschreven daemon die plain tekst over de verbinding inleest en daarop een antwoord terug stuurt, ook plain tekst. Het versturen werkt, de daemon krijgt alles binnen, de daemon verstuurt dan ook de response, maar daar loopt het mis. Ik krijg dan volgende foutmelding.
Warning: socket_read() [function.socket-read]: unable to read from socket [0]: The operation completed successfully. in c:\PHP\www\daemon\index.php on line 34
Als ik een raw verbinding open naar de daemon doet ie alles goed. Dus het ligt echt aan het PHP gedeelte. Iemand een goeie tip?
Thanks!
De opstelling is als volgt. Er draait een zelfgeschreven daemon die plain tekst over de verbinding inleest en daarop een antwoord terug stuurt, ook plain tekst. Het versturen werkt, de daemon krijgt alles binnen, de daemon verstuurt dan ook de response, maar daar loopt het mis. Ik krijg dan volgende foutmelding.
Warning: socket_read() [function.socket-read]: unable to read from socket [0]: The operation completed successfully. in c:\PHP\www\daemon\index.php on line 34
Code: Selecteer alles
$serviceport = 18002;
$address = "127.0.0.1";
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket < 0) {
die("socket_create failed. Reden: ".socket_strerror($socket));
} else {
echo "Socket gemaakt<br>\n";
}
$connection= socket_connect($socket, $address, $serviceport);
if ($connection < 0) {
echo "socket_connect() failed. Reden : ".socketstrerror($connection);
} else {
echo "Connectie gelegd.<br>\n";
}
$request = "CPU\r\n";
socket_write($socket, $request, strlen($request));
$info = "";
while($info = socket_read($socket, 2048, PHP_NORMAL_READ)) { //<-- regel 34
echo "CPU-info : ".$info;
}
socket_close($socket);
Als ik een raw verbinding open naar de daemon doet ie alles goed. Dus het ligt echt aan het PHP gedeelte. Iemand een goeie tip?
Thanks!