Hallo liebe Forengemeinde,
ich hoffe ich bin hier richtig ansonsten bitte in die richtige Sparte verschieben.
Ich habe bereits in Google nach eine Lösung für mein Problem gesucht, leider jedoch nicht fündig geworden.
Problem ist folgendes.
Zur Kommunikation zwischen PHP und einem Java Server wird ein Socket verwendet.
Wenn ich in der Funktion
readSocket gleich ein
die() einsetze, werden die Daten über socket_write an den Server gesendet, bekomme logischerweise keine Rückmeldung mehr (erhalte irgendwann
socket_read() fehlgeschlagen: Grund: Connection reset by peer). Habe ich jedoch in readSocket kein die() eingefügt so akzeptiert der Server zwar den Client, jedoch werden keine Daten mehr versendet an den Server. Woran kann dies liegen? Fehlermeldungen werden keine produziert
Ablauf:
PHP-Code:
$oSocket = new Socket();
$oSocket->connect();
$oSocket->writeSocket(json_encode($_POST));
echo $oSocket->readSocket();
$oSocket->close();
Socket-Class
PHP-Code:
class Socket {
private $sAdress = 'xxx';
private $iPort = 000;
private $rSocket = NULL;
private $rMsgSocket = NULL;
private $sMessage = "";
private $sResponse = "";
function connect() {
if (($this->rSocket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) === false) {
echo "socket_create() fehlgeschlagen: Grund: " . socket_strerror(socket_last_error()) . "\n";
}
if((socket_connect($this->rSocket, $this->sAdress, $this->iPort)) < 0){
echo "socket__connect() fehlgeschlagen: Grund: " . socket_strerror(socket_last_error()) . "\n";
}
}
function writeSocket($msg) {
$this->sMessage = $msg;
if (false === socket_write($this->rSocket, $this->sMessage, strlen($this->sMessage))) {
echo "socket_write() fehlgeschlagen: Grund: " . socket_strerror(socket_last_error()) . "\n";
}
}
function readSocket() {
$this->rMsgSocket = $this->rSocket;
if (false === ($this->sResponse = socket_read($this->rMsgSocket, 2048, PHP_NORMAL_READ))) {
echo "socket_read() fehlgeschlagen: Grund: " . socket_strerror(socket_last_error($this->rMsgSocket)) . "\n";
}
return $this->sResponse;
}
function close() {
socket_close($this->rMsgSocket);
socket_close($this->rSocket);
}
}
Hoffe ihr könnt mir da weiterhelfen.