Hi,
ich habe das folgende Problem:
zur Zeit schreibe ich an einer Server-Client Anwendung.
Den Server schreibe ich in c#, was ganz gut geht.
Ich kann auch schon mit dem php Client auf den Server verbinden und wenn ich etwas in den Stream schreibe kann der Server das auch wieder lesen.
So weit so gut.
Da ich aber mit dem Client nicht nur Daten senden will, sondern das ganze mit Anfrage/Antwort lösen will, muss ich danach auch wieder Daten aus dem Stream lesen.
Und das ist mein Problem, irgendwie scheint Php das Ende des Streams nicht zu erkennen :S.
Wenn ich blocking aktiviere, dann bleibt er beim empfangen der Daten hängen, deaktiviere ich es, dann geht er einfach darüber hinweg ohne etwas zu lesen.
Wenn ich weniger Daten lese als im Stream sind, dann funktioniert es jedoch problemlos, setze ich einen höheren Wert als die Länge des Streams, dann passiert was ich oben schon beschrieben habe.
Hoffe ihr könnt mir hierbei helfen
Gruß Flo
ich habe das folgende Problem:
zur Zeit schreibe ich an einer Server-Client Anwendung.
Den Server schreibe ich in c#, was ganz gut geht.
Ich kann auch schon mit dem php Client auf den Server verbinden und wenn ich etwas in den Stream schreibe kann der Server das auch wieder lesen.
So weit so gut.
Da ich aber mit dem Client nicht nur Daten senden will, sondern das ganze mit Anfrage/Antwort lösen will, muss ich danach auch wieder Daten aus dem Stream lesen.
Und das ist mein Problem, irgendwie scheint Php das Ende des Streams nicht zu erkennen :S.
PHP-Code:
<?php
function connect() {
echo "connecting...\n";
$sock = fsockopen("127.0.0.1", 10000);
return $sock;
}
function send($fp, $bytes) {
echo "sending data...\n";
fputs($fp, $bytes);
}
function receive($fp) {
echo "receive data...\n";
$response = "";
//socket_set_blocking($fp, false);
$response = fgets($fp, 256);
return $response;
}
$request = array("Request" => "GetStatus");
$sock = connect();
$response = request ($sock, $request);
echo $response."\n";
?>
Wenn ich weniger Daten lese als im Stream sind, dann funktioniert es jedoch problemlos, setze ich einen höheren Wert als die Länge des Streams, dann passiert was ich oben schon beschrieben habe.
Hoffe ihr könnt mir hierbei helfen
Gruß Flo

Kommentar