Problem mit fsockopen-Kommunikation.

Kai008

Erfahrenes Mitglied
Hi. :)
Ich versuche per fsockopen mit einen Java-Programm zu kommunizieren. Die ausgehenden Daten funktionieren tadellos, das Programm empfängt sie, tut was es tun soll und sendet daraufhin eine Bestätigung bzw. Anlehnung.

Nur das Empfangen dieser macht Probleme. fgets() blockiert meistens die ganze Zeit, bis er nach 60 Sekunden durch das eingestellte Limit abbricht. :/

PHP:
function comWithJava($parm)
{
	$ip = "localhost"; //Host
	$port = 43252; //Port

	$msg = "PhpComRQ;".$parm.";$"; //Versendeter Befehl

	$fp = fsockopen($ip, $port, $error, $errno); //Öffne Verbindung
	fwrite($fp, $msg); //Schreibe Befehl.

	$answer = "";
	while(!feof($fp)) //Solange, bis die Antwort vollständig gelesen wurde...
	{
		$buffer = fgets($fp, 1024); //Lese vom Socket.
		$answer = $answer.$buffer; //Und füge das Empfangene der Variable hinzu.
	}
	fclose($fp); //Schließe Socket.

	$split = preg_split(";", $answer); //Splitte das Empfangene.

	if($split[0] == "PhpComNAK") //Bei Ablehnung false zurückgeben.
		return(false);
	return(true); //Sonst true.
}

Hat jemand zufällig eine Idee, woran das liegen könnte? :)
 
Ich habs herausgefunden. Der Fehler war, dass die Gegenstelle (der Java-Server) die Socket-Verbindung nicht geschlossen hat. Ich wollte sie offen halten, falls noch mehr kommt, geht offensichtlich nicht.

Vielleicht hilft es ja den einen oder anderen. :)
 
Zurück