Php Chat >>> Client

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

  • Php Chat >>> Client

    Hallo zusammen,

    bin gerade dabei einen chat mit sockets zu realisieren und habe mir dazu per opensource nen chatserver besorgt, der auch wunderbar funktioniert =)

    Nun möchte ich einen Chatclient mir bastelt

    Frage dabei ist folgende:

    Bei dem Server ist ja im grunde socket_select() dafür zuständig, mehrere Verbindungen zu verwalten, dass macht er, indem er die 4 Arrays , zum Beispiel das nur für die Sockets, die gelesen haben, die geschrieben haben oder auch die einen fehler herausgegeben haben, bei aufruf aktualisiert. Diese müssen dann nur noch mit zuvor erstellten client arrays abgeglichen werden um bestimmte aktionen wie zum beispiel das Verbinden eines neuen Sockets zu erkennen.

    Nun gut

    Auf der Seite des Client brauche ich das doch garnicht oder?

    ich bräuchte doch dann nur die Methode

    $socket = socket_bind($socket,$adress,$port);

    socket_listen($socket);


    Ist mein gedankenansatz hier richtig?

    und dann noch ne frage wie ich dann wohl an die Daten gelange der mir der Server gibt

    dachte da an sowas wie

    while($input = socket_read($serverSocket, 1024)){

    //verarbeitung

    }


    Sind meine Gedankenansätze richtig?

    wenn nein wo liegen die Fehler?

    Freue mich über Rat =)

  • #2
    Naja schau dir lieber (nochmal) an, was socket_bind macht und zurückgibt.

    Und ob dein Client nur einen Socket unterhält, ist deine Entscheidung. Theoretisch könnte man auch einen zweiten betreiben - jeweils einen zum Senden, einen zum Empfangen.
    Allerdings darfst du nicht vergessen, dass die Anzahl der Sockets eines Clients als multiplikativer Faktor am Server anliegt ... 2 Sockets pro Client => 2 * Anzahl_Clients Sockets am Server ... oder anders herum betrachtet: Je mehr Sockets pro Client, desto weniger Clients pro Server.

    Kommentar


    • #3
      hm also soweit ich das verstehe mach socket_bind() nichts anderes, also einem erstellten socket eine ip und einen port zu übergeben, auf den er dann mit socket_listen() nach anderen sockets (in dem fall nach dem server) horchen kann

      Richtig?


      ich vermute du denkst an einen socket zum schreiben und einen zum lesen , weil ein socket nicht beides gleichzeitig kann?

      welches ist die effizienteste lösung bei einem client in php mit sockets?

      bzw welche alternativen gibt es zu 2 sockets pro client?

      also man empfängt ja ständig was in einem grösserem chat, da hat man kaum die möglichkeit über einen selben socket dann zu schreiben, seidenn man stellt den socket in eine richtung aus sobald man anfängt zu schreiben bzw was abschicken möchte?

      ob das geht weiss ich nicht, aber will nicht alles erfragen, gucke selber mal zu dem thema ein bissl noch, aber zu oberen kommentar von mir könnte ja jemand mal wa sagen

      dankö

      Kommentar


      • #4
        socket_bind() gibt einen Wahrheitswert zurück, bestenfalls true. Damit kann sicket_listen() wenig anfangen.

        Kommentar


        • #5
          stimmt du hast recht =)

          wenn

          socket_bind($socket,$host,$port);

          socket_listen($socket);

          sollte dann aber korrekt sein ..

          ist es richtig dann später wie ich es oben beschrieben habe mit socket_read() dann weiter zu arbeiten?

          wäre für mich irgendwie logisch

          sry für all den theoretischen kram, aber habe gerade keine möglichkeit das speziell auszutesten und brauche das für morgen auf der arbeit =)

          danke

          Kommentar


          • #6
            Lies dir auf http://de.php.net/manual/de/ref.sockets.php einfach die Beispiele 1 und 2 durch. Das entspricht grundsätzlich dem, was du vorhast.
            Dein Client sendet keinen HTTP-Request und gibt dessen Antwort aus, sondern sendet Chattext und prüft ob die Antwort eine Empfangsbestätigung des Servers ist.
            Dein Server sendet natürlich nicht nur zurück, was er empfangen hat (Echo), sondern sendet Empfangsbestätigungen und Chattext.

            Da dein Server schon fertig programmiert ist, stellt sich eigentlich nicht die Frage, wieviele Sockets jeder Chatclient unterhält. Das gibt die Serverprogrammierung schon vor.

            Kommentar


            • #7
              hi okay..

              also bin heute was weiter gekommen

              der server ist für einen socket pro client programmiert worden

              ich bin jetzt soweit , das ich zum server connecten kann und das ich in einer whileschleife alles was vom server kommt auslesen lassen kann

              mein problem ist nun, irgendwie in dieser while schleife zu interagieren um auch text senden zu können.

              zerbrech mir da momentan den kopf^^

              aber ma sehn

              Kommentar

              Lädt...
              X