Chat brauch ich ein Protokoll?



  • 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