php4 socket_read Frage

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • php4 socket_read Frage

    Hallo Community,

    ich beschäftige mich derzeit mit den Sockets in php4. Habe mir einen kleinen Server und einen Client dazu gepinselt. Soweit funktioniert auch alles ganz gut, bis auf folgendes Problem:

    Ich sende vom Client Daten an den Server, es sind schon ein paar mehr und der Server liest die per socket_read() auch ein, allerdings nicht vollständig.

    Das Problem hatte ich auch in die andere Richtung. Allerdings habe ich es dort auf folgende Weise gelöst:

    PHP-Code:
    while($buffer socket_read($sock2048)){ $input .= $buffer; } 
    Wenn ich das nun auf dem Server versuche genau so zu lösen endet das immer in einer Endlosschleife. Hier ein Ausschnitt:

    PHP-Code:

    while(isset($sock)){ #### Socket Server soll permanent laufen

    $client socket_accept($sock);

    while(
    $read socket_read($client2048)){

    $input .= $read;

    }

    # Ab hier dann weitere Anweisungen was mit den gelesenen Daten passieren soll. 
    Wie gesagt das ganze endet immer in einer Endlosschleife. Nehm ich das ohne die while schleife läuft das Script aber die Daten werden nicht komplett eingelesen. Hat da jemand einen Tipp für mich wie ich das am besten lösen kann? Danke schon mal


    MfG

  • #2
    evtl. dritten parameter an socket_read übergeben.
    schau dir auch die standardkonstruktion im ersten beispiel unter http://de2.php.net/manual/en/ref.sockets.php an.

    Kommentar


    • #3
      http://code.google.com/p/phpsocketdaemon/

      Kommentar


      • #4
        ok danke.

        Habs auf
        PHP-Code:
         PHP_NORMAL_READ 
        umgestellt und da kommen alle Daten an.

        Das einzige Problem ist jetzt, das wenn in den zu schreibenen Daten ein \n vorhanden ist er das einlesen beendet, was er ja auch machen soll. Ich würde aber gerne das er nur das letzte \n beachtet und dann das lesen beendet.

        Wie kann ich das realisieren?


        MfG

        Kommentar


        • #5
          "er" kann ja nicht wissen, was "das letzte \n" ist.

          Kommentar


          • #6
            ja das ist mir schon klar. Das letzte wird ja von mir definiert und extra mit gesendet.

            Die Frage war auch eher, wie kann ich die anderen vorher vorkommenden maskieren, verstecken, für den Server unlesbar oder was auch immer, machen so das diese keine Wirkung haben.

            Kommentar


            • #7
              Die Frage war auch eher, wie kann ich die anderen vorher vorkommenden maskieren, verstecken, für den Server unlesbar oder was auch immer, machen so das diese keine Wirkung haben.
              Einfach entfernen falls möglich. (wenn du sie noch brauchst kannst du sie auch durch /n ersetzen.)
              Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

              Kommentar


              • #8
                ich habs schon am start,

                PHP-Code:
                str_replace 
                war das was ich gesucht habe.

                Leider klappt es mit der vollständigen Übertragung immer noch nicht so ganz.

                Habe versucht den Inhalt einer Datei, Größe 55k, zu senden aber das kam immer noch nicht vollständig an.

                Hat das schon mal jemand hin bekommen solche "Datenmengen" über Sockets zu übertragen? Oder ist das dafür völlig ungeeignet?

                Den Inhalt von z.B. einer Datei mit 7,3k kommt alles komplett an.
                Zuletzt geändert von moodsx; 15.07.2007, 15:44.

                Kommentar


                • #9
                  es funktioniert alles.

                  Es lag an

                  PHP-Code:
                  fread 
                  womit ich die Datei auf dem Server eingelesen habe.

                  Ich danke Euch allen für Eure Hilfe.


                  MfG

                  Kommentar


                  • #10
                    zeig mal bitte dein funktionsfähiges beispiel (für die nachwelt).

                    Kommentar

                    Lädt...
                    X