Chat brauch ich ein Protokoll?



  • Hallo liebe Community,

    ich programmieren zur Zeit einen Chat mit Server, der Client ist mit wxWidgets gemacht und es funktioniert soweit auch schon recht gut nur hab ich ein paar kleinere Probleme(z.b. das Beenden von mehreren Clients gleichzeitig) mir wurde jetzt gesagt, dass es besser wäre wenn ich mein eigenes Protokoll dafür schreiben würde nur hab ich absolut keine Ahnung wie ich sowas anstellen soll! Hat einer von euch vlt. nützliche Links oder ein Beispiel? Wäre über jede Hilfe dankbar.

    Gruß Stroker



  • über welches Protokoll läufts denn derzeit?



  • Im Moment verwende ich die Standartfunktionen aus der windock.h (recv(), send(), usw)



  • UDP oder TCP?
    Und was genau sendest du da?



  • mit "protokoll" ist dabei gemeeint, du sollst deine nachrichten in protokoll form bringen (pakete von kombinierten daten in einer bestimmten struktur statt einfach "nur" text), z.b. erstes byte länge des paket, 2tes byte befehl, alle nachfolgenden bytes daten/text .... oder was in der richtung

    und das byte für den befehl bnutzt du halt um dem client auch befehle zu übermitteln die nicht einmal in der konsole auftauchen müssten ...

    soweit alles klar ?



  • Deshalb hab ich ja gefragt, was er bisher sendet. Weil es ja bestimmt schon eine Form von "Protokoll" ist 😉



  • ehrlich egsagt würd cih fast schon tippen das er die strings mit strlen durch das send würgt :p ... so hörte es sich zumindest für mich an XD



  • Ceos schrieb:

    ehrlich egsagt würd cih fast schon tippen das er die strings mit strlen durch das send würgt :p ... so hörte es sich zumindest für mich an XD

    Ist auch ein Protokoll, nur kein besonders zuverlässiges 😉



  • Jop genau sende strings mit send und empfange mit recv. wie programmiert man denn so ein Protokoll?



  • Ceos hat eigentlich alles schon gesagt, ich führe das einfach nochmal aus.

    Du musst dir überlegen, welche Daten über die Leitung gehen können. Das wären z.B. eine Liste mit allen Nicknames im Chat, eine Nachricht eines Clients an den Channel, eine private Nachricht von Client zu Client, usw.

    Dann musst du die Nachrichten als Strings kodieren, um sie über die Sockets zu schicken. Du machst sozusagen ein selbstdefiniertes Paket aus einer Nachricht. D.h. am Anfang steht eine 1-2 Byte lange Angabe über die Länge des Pakets. Dann kommt ein Code für den Befehl, z.B. 01 für "Nachricht an Channel". Dann schließlich der eigentliche Nachrichtentext, u.U. komprimiert und/oder sogar verschlüsselt. Das ganze Paket liegt nun als String vor und kann per send() verschickt werden. Der Empfänger muss nun das Paket dekodieren, d.h. er liest die Länge aus, bestimmt den Befehl, der ausgeführt werden soll und erkennt in unserem Beispiel, dass der Datenblock am Ende des Pakets eine Nachricht an den ganzen Channel darstellt. Die muss man dann nur noch verarbeiten.

    Erstmal bis hier hin, schau es dir mal an und überleg, ob du es verstehst.

    gruß
    Martin



  • du musst dir selber überlegen wie du dir so ein protokoll zusammen baust..! du überlegst dir halt divere kommunikations befehlte zwischen client und server..! So das nich nur der "chat" text gesendet wird, sonder das client und server auf über die leitung kommunizieren!



  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum Rund um die Programmierung verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Ok danke leute hab das jetzt verstanden wie das funktioniert und es hört sich auch gar nicht so schwer an und ich hab mir auch schon gedanken über die realisierung gemacht und ich sollte es auch hinbekommen. Vielen Dank nochmal 😃


Anmelden zum Antworten