Ich versuche, eine Kommunikation zwischen einer PHP-Seite und einem laufenden Java-Server herzustellen. Nur ein einfacher String-Austausch über Sockets.
Dies ist mein Java-Code für den Thread, der die Verbindung verarbeitet:
InputStream in = clientSocket.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(in));
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(clientSocket.getOutputStream()));
String request;
if((request=br.readLine())!=null){
System.out.println("got the following request: " + request);
out.write(request +"\n");
out.flush();
out.close();
in.close();
}
Ich habe es mit einem einfachen Java-Client getestet, der die Zeichenkette sendet, dann das Ergebnis empfängt und es zurückdruckt, und es hat funktioniert. Sowohl der Client als auch der Server hatten die gleiche Ausgabe.
Dies ist mein PHP-Code:
$fp = @fsockopen ($host, $port, $errno, $errstr);
if($fp){
fputs($fp, $str);
//echo fgets($fp);
}
close($fp);
Dieser sendet die Zeichenfolge an den Server, und der Server empfängt sie. Aber sobald ich die Zeile mit fgets($fp) auskommentiere, werde ich blockiert, bis nach 1-2 Minuten eine Art Timeout eintritt. Während dieses Blocks empfängt mein Server nichts. Nach der Zeitüberschreitung gibt mein Server aus, dass er die Zeile empfangen hat, und sendet wahrscheinlich die Antwort zurück, aber der PHP-Code gibt nichts aus.
Was könnte das Problem sein?
Ich danke Ihnen im Voraus.
P.S. Es ist wahrscheinlich erwähnenswert, dass ich auf diese Webseite über AJAX zugreife, so dass das Ergebnis auf die andere Seite "zurückgesendet" wird.