PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP für Fortgeschrittene und Experten (http://www.selfphp.de/forum/forumdisplay.php?f=13)
-   -   socket_write ignoriert (http://www.selfphp.de/forum/showthread.php?t=24683)

Psynox 20.06.2012 17:07:53

socket_write ignoriert
 
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_INETSOCK_STREAMSOL_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->sMessagestrlen($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->rMsgSocket2048PHP_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.

Xor 05.07.2012 15:26:27

AW: socket_write ignoriert
 
Hi,

Zitat:

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).
Wenn du ein die() einsetzt sollte danach garnix mehr kommen...? Und warum solltest du das wollen? (Socket wieder schliessen etc?)

Zitat:

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.
Der Server sollte den Client bereits nach "$oSocket->connect(); " akzeptieren.

Was sagt der Java-Server wenn du nur connectest und dann wieder schliesst? kriegt er das überhaupt mit?

Lg


Alle Zeitangaben in WEZ +2. Es ist jetzt 13:14:22 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.