Ziemlich kniffliges Socketproblem / verbindungslose kommunikation



  • ok dann darf er aber nicht SOCK_STREAM nehmen.



  • socket11 schrieb:

    ich habe eine Serveranwenungs für eine Verbindungslose TCP Kommunikation geschrieben.

    Dann nimmt man recv.

    Und wo ist listen() und accept()?

    Für eine verbindungslose Kommunikation sind weniger Schritte notwendig, da der Aufbau der Verbindung entfällt. Auf Seiten des Servers wird ein Socket angelegt und mit einem Port verbunden. Der Client legt ebenfalls einen Socket an, den er mit einem Port verknüpfen kann.



  • hat sich das problem jetzt erledigt?



  • socket11 schrieb:

    Verbindungslose TCP

    Oh jetzt les ich das erstmal...gibts das überhaupt? Ich glaube nicht. 😉

    Gibt es das tatsächlich nur für UDP?
    Ohh wenn das stimmt weiß ich wo das Problem liegt,
    dann setze ich einfach sock = socket(AF_INET,SOCK_DGRAM,NULL); --> somit is ne UDP Verbindung erstellt.
    Ich werde das gleich mal testen. Hoffentlich liegt sonst kein Fehler im SourceCode vor 😃



  • socket11 schrieb:

    ich habe eine Serveranwenungs für eine Verbindungslose TCP Kommunikation geschrieben.

    Dann nimmt man recv.

    Und wo ist listen() und accept()?

    Das braucht man doch nur für eine Verbindungsorientierte Kommunikation.

    Was meinst du dazu:
    *
    Für eine verbindungslose Kommunikation sind weniger Schritte notwendig, da der Aufbau der Verbindung entfällt. Auf Seiten des Servers wird ein Socket angelegt und mit einem Port verbunden. Der Client legt ebenfalls einen Socket an, den er mit einem Port verknüpfen kann. In den meisten Fällen ist dies aber nicht notwendig, da die Portnummer vom System automatisch beim ersten Verschicken eines Pakets zugewiesen wird.
    Da mit einem Socket jetzt kein festes Ziel verbunden ist, muss die Zieladresse bei jedem Paket explizit angegeben werden. Daher wird anstelle der Funktion send die Funktion sendto verwendet. Die entsprechende Funktion zum Lesen ist recvfrom. Mit dieser Funktion kann ein Programm - ähnlich wie bei der Funktion accept beschrieben - Informationen über den Absender abfragen. Allerdings spielt beim Lesen eines Pakets der Unterschied zwischen verbundenen und unverbundenen Sockets eine weniger große Rolle. Die Informationen über den Absender sind optional. Wenn dafür kein Bedarf besteht, kann man auch die schon bekannte Funktion recv verwenden.
    *



  • Vanatik schrieb:

    socket11 schrieb:

    Verbindungslose TCP

    Oh jetzt les ich das erstmal...gibts das überhaupt? Ich glaube nicht. 😉

    Gibt es das tatsächlich nur für UDP?
    Ohh wenn das stimmt weiß ich wo das Problem liegt,
    dann setze ich einfach sock = socket(AF_INET,SOCK_DGRAM,NULL); --> somit is ne UDP Verbindung erstellt.
    Ich werde das gleich mal testen. Hoffentlich liegt sonst kein Fehler im SourceCode vor 😃

    **Du hast Recht!! Es gibt keine Verbindungslose Kommunikation für TCP!!!

    Dennoch sind lediglich folgende Funktionen erforderlich:
    **

    SERVER:
    1. Endpunkt anlegen:

    socket()
    

    2. Adresse festlegen:

    bind()
    

    3. Daten lesen:

    recvfrom()
    

    4. Daten schreiben:

    sendto()
    

    CLIENT:
    1. Endpunkt anlegen:

    socket()
    

    2. Adresse festlegen:

    bind()
    

    3. Daten lesen:

    recvfrom()
    

    4. Daten schreiben:

    sendto()
    

    Vielen Dank für eure Hilfe, war 👍 🙂



  • closesocket ist auch noch erforderlich. 😃



  • klugscheisser schrieb:

    closesocket ist auch noch erforderlich. 😃

    Stimmt, is auch schon drin 😉



  • Ich habe Client und Serverseitig einer Buffer von 256 Zeichen angelegt. Senden und empfangen kann ich aber maximal nur 4 Zeichen.
    Woran liegt das?



  • An UDP? 😉



  • frage? schrieb:

    An UDP? 😉

    Is ja gaaanz easy: Es liegt nicht an UDP, man sollte nur die Parameter von sendto() aendern... 🤡


Anmelden zum Antworten