Re: Socket Verbindung unter PHP
Geizhals » Forum » Programmierung » Socket Verbindung unter PHP (16 Beiträge, 182 Mal gelesen) Top-100 | Fresh-100
Du bist nicht angemeldet. [ Login/Registrieren ]
Socket Verbindung unter PHP
22.08.2007, 12:59:09
Hi,
ich habe ein großes Problem. Ich habe ein Gerät, welches über eine IP und einem PORT zu meinem Server verbindet. Wie stelle ich es an, das ich die Daten empfangen kann. Es ist keine HTTP Verbindung, also kein Apache. Mittlerweile habe ich Verbindungsanfragen vom Gerät. Das Skript starte ich in der Shell also mit "nohup script.php &".

Im PHP habe ich folgendes gemacht, aber es funktioniert nicht (Beispiel aus php.net):


while (true)
{
    // disconnected every 5 seconds...
    receive_message('127.0.0.1','90',5);
}

function receive_message($ipServer,$portNumber,$nbSecondsIdle)
{
    // creating the socket...
    $socket = stream_socket_server('tcp://'.$ipServer.':'.$portNumber, $errno, $errstr);
    if (!$socket)
    {
        echo "$errstr ($errno)<br />\n";
    }
    else
    {
        // while there is connection, i'll receive it... if I didn't receive a message within
        // $nbSecondsIdle seconds, the following function will stop.
        while ($conn = @stream_socket_accept($socket,$nbSecondsIdle))
        {
            $message = fread($conn, 1024);
            
            $c = "--- ".date("d-m-Y H:i:s")." -----------------------\r\n";
            $fp = fopen("log.txt", "a+");
            $c .= $message."\r\n";
            $c .= "-----------------------------------------------\r\n";
            fputs($fp, $c);
            fclose($fp);

            fputs ($conn, "OK\n");
            fclose ($conn);
        }
        fclose($socket);
    }
}


Hat jemand einen TIPP für mich :-)

Grüsse,
Philipp


Ich spende für rote Nasen Clowndoctors, du auch ?
Deine Registrierung ist gleichzeitig eine Spende.

22.08.2007, 13:01 Uhr - Editiert von jobnavigator, alte Version: hier
Antworten PM Alle Chronologisch
 
Melden nicht möglich
.  Re: Socket Verbindung unter PHP  (Somnatic am 22.08.2007, 13:16:38)
..  Re(2): Socket Verbindung unter PHP  (jobnavigator am 22.08.2007, 13:57:23)
...  Re(3): Socket Verbindung unter PHP  (Somnatic am 22.08.2007, 19:43:54)
.  Re: Socket Verbindung unter PHP  (Dr. Watson am 22.08.2007, 19:34:24)
..  Re(2): Socket Verbindung unter PHP  (jobnavigator am 22.08.2007, 21:20:32)
..  Re(2): Socket Verbindung unter PHP  (jobnavigator am 11.09.2007, 18:58:02)
...  Re(3): Socket Verbindung unter PHP  (Dr. Watson am 12.09.2007, 11:29:12)
.  Re: Socket Verbindung unter PHP  (ChrisS am 22.08.2007, 20:38:30)
..  Re(2): Socket Verbindung unter PHP  (jobnavigator am 22.08.2007, 21:19:36)
.  Re: Socket Verbindung unter PHP  (stefs am 14.09.2007, 05:17:38)
.
Re: Socket Verbindung unter PHP
14.09.2007, 05:17:38
also, auf den ersten blick schaut das ganz ordentlich aus. ich hab schon ein paar apps in php geschrieben, die socket verbindungen nutzen, und kann auf den ersten blick keinen eindeutigen fehler bemerken ...

in so einem fall heissts eigentlich immer: testen, testen, testen. wo liegt der fehler?

funkt schon stream_socket_server nicht? oder nimmt er erst bei stream_socket_accept nix an?

am besten is in solchen fällen natürlich immer, du schreibst dir einen simplen server, um die den client auch passend testen zu können.

ich werd morgen mal schaun, ob ich ein funktionierendes beispiel anfind einer client/server kommunikation anfind.

ich hab wohl alles verkehrt verstanden. uhrzeit=spät und alkohollevel beträchtlich.

um den server zu testen, reicht im grunde ein tool, das überall vorhanden ist: telnet. probier dich einfach, mit telnet zu connecten. wenn das funkt, dann hast wohl das problem, dass deine app den server "von aussen" nicht erreichen kann. in dem fall solltest nicht auf 127.0.0.1 lauschen, sondern auf die öffentliche ip deines servers. falls er sich in einem nicht-routbaren netz befindet (also dein rechner eine 192.168.x.x oder so adresse hat), trag einfach eine portweiterleitung bei deinem router ein. danach sag deinem client, dass er sich auf die adresse deines routers connecten soll.

14.09.2007, 05:28 Uhr - Editiert von stefs, alte Version: hier
[ Dieser Beitrag wurde inzwischen editiert. Die aktuelle Version befindet sich hier. ]
Antworten PM Alle Chronologisch Zum Vorgänger
 
Melden nicht möglich
 

Dieses Forum ist eine frei zugängliche Diskussionsplattform.
Der Betreiber übernimmt keine Verantwortung für den Inhalt der Beiträge und behält sich das Recht vor, Beiträge mit rechtswidrigem oder anstößigem Inhalt zu löschen.
Datenschutzerklärung