PHP -> Auslesen eines Netzwerksockets

Dieses Thema im Forum "Web-Programmierung" wurde erstellt von maceis, 15.10.2004.

  1. maceis

    maceis Thread Starter MacUser Mitglied

    Beiträge:
    16.645
    Zustimmungen:
    596
    MacUser seit:
    24.09.2003
    hallo zusammen,

    ich habe ein Problem in Zusammenhang mit einer Netzwerkverbindung zu einem pop3 Server, die ich mit PHP aufbaue.
    Die Verbindung selbst kann ich problemlos mit fsockopen() herstellen.
    Auch die Authentifizierung mit fputs() klappt ohne Probleme, die Serverantworten lese ich mit fgets() ebenfalls erfolgreich aus.

    Probleme gibt es erst, wenn ich mit freads() Mails abrufen und deren Text ausgeben möchte.
    Bei der ersten Mail klappt das noch, die zweite wird mir nicht mehr ausgegeben.

    Hier mal ein Auszug aus dem Skript, das ich für wichtig erachte.
    PHP:
    ...
         
    17     retr_message($handle"retr 4\r\n");
         
    18     retr_message($handle"retr 5\r\n");
    ...
         
    80 function retr_message($handle$command)
         
    81 {
         
    82     // retr-Befehl an Server senden
         
    83     fputs($handle$command);
         
    84     // retr- Befehl im Browser ausgeben
         
    85     $command="<font color=blue>".($command)."</font>";
         
    86     echo $command;
         
    87     // Antwort des Servers in Variable speichern
         
    88     $buffer fread($handle,128);
         
    89     while (!feof($handle))
         
    90     {
         
    91         $buffer .= fread($handle128);
         
    92     $statussocket_get_status($handle);
         
    93     
         
    94     // Antwort des Servers am Browser ausgeben
         
    95     echo "<font color=maroon".nl2br($buffer)."</font>";
         
    96     // $status['eof']=0;
         
    97     show_status($status"navy");
         
    98 }
    ...
    Vielleich kann mir mal jemand einen Tip geben.

    Nur Mail 4 wird am Browser ausgegeben.

    Was mir noch aufgefallen ist:
    Beim Sniffen mit dem ethereal ist mir aufgefallen, dass die Mail schon lang gesendet wurde, die Seite im Browser aber erst rund 1 Minute später aufgebaut wird.
    Die zweite Mail wird gar nicht vom Server gesendet obwohl das retr 5 Kommando gesendet wird.
    Ich hatte daher befürchtet, dass das "eof" der ersten mail "stört", allerdings hat ein Zurücksetzen (Zeile 96) auch nichts gebracht.
    Ziel ist es, dass ich hintereinander zwei retr-Kommandos an den Server senden kann und mir auf der Seite die beiden Mails hintereinander ausgegeben werden.
     
  2. Katana

    Katana MacUser Mitglied

    Beiträge:
    989
    Zustimmungen:
    0
    MacUser seit:
    30.08.2004
    irgendwelche pipes die noch geflusht werden müssen/sollten?
     
  3. maceis

    maceis Thread Starter MacUser Mitglied

    Beiträge:
    16.645
    Zustimmungen:
    596
    MacUser seit:
    24.09.2003
    Ich bin mir nicht sicher, ob ich Dich richtig verstehe.
    fsockopen(...) sollte mW ähnich funktionieren wie fopen(datei).
    Man kann hineinschreiben und daraus lesen.
    Nur klappt das nicht so richtig ohne dass ich wüsste, was ich falsch mache.
     
    Zuletzt bearbeitet: 15.10.2004
  4. Katana

    Katana MacUser Mitglied

    Beiträge:
    989
    Zustimmungen:
    0
    MacUser seit:
    30.08.2004
    ich habe das so verstanden, dass das lesen der daten aus dem socket klappt und die daten auch ankommen, es aber beim senden an den browser erst später angezeigt wird? senden an den browser geht über stdout -> ich dachte deshalb an flush();

    siehe http://de.php.net/manual/de/function.flush.php
     
  5. maceis

    maceis Thread Starter MacUser Mitglied

    Beiträge:
    16.645
    Zustimmungen:
    596
    MacUser seit:
    24.09.2003
    Das ist nur ein Nebeneffekt, der mir aufgefallen ist.
    Das Hauptproblem besteht darin, dass nach dem zweiten Kommando "retr #" keine Mail übertragen wird.
    Ich hab das flush natürlich dennoch probiert, ergibt aber keine Änderung.
    Trotzdem Danke für die Mühe ;)
     
Die Seite wird geladen...
Ähnliche Themen - PHP Auslesen eines
  1. max@hismac
    Antworten:
    7
    Aufrufe:
    2.104
    Olivetti
    14.04.2011
  2. berndi
    Antworten:
    3
    Aufrufe:
    552
    rm -r *
    24.10.2009
  3. ne0x
    Antworten:
    14
    Aufrufe:
    1.233
    eXcuvator
    29.10.2007
  4. img31
    Antworten:
    4
    Aufrufe:
    655
    img31
    16.08.2007
  5. toaster099
    Antworten:
    17
    Aufrufe:
    1.094
    Saugkraft
    19.01.2007