Sockets



  • Hallo Programmierprofis,

    ich schreibe zur Zeit als Übung und aus Interesse ein Kleinew Chatprogramm mit WinSockets in VCL.

    Der Server läuft und nimmt Verbindungen entgegen. Der Client verbindet sich auch erfolgreich mit dem Server und sendet den zuvor eingegebenen Nickname an den Server welcher diesen ausgibt und speichert. Anschließend vergibt der Server eine ID und sendet diese an den Client dieser kann die ID jedoch nicht empfangen. Das alles passiert mit send() und recv().

    Das Problem ist, das recv() den Socket vom sendenden Socket brauch. Beim Server bekomme ich den Socket des Client von accapt() nach dem connect() von einem Client.Somit kann ich Daten empfangen. Aber woher bekomm ich den Socket vom Server um als Client Daten vom Server mit recv() zu empfangen?

    Ich hoffe mir kann einer helfen, ich hab schon sämtliche Beispiele durchgearbeitet. Mit der select() Funktion kann ich irgendwie nichts anfangen. Vielleicht habt ihr ja eine Idee wie ich das sinnvoll implementieren könnte.

    MfG



  • Du brauchst doch auf der Client-Seite nicht den Socket des Servers, sondern du verwendest einfach denselben wie beim Senden auch.

    Sonst poste doch mal deinen bisherigen Code...



  • Das habe ich schon probiert, jedoch kommt nichts an. Ich habe in Totorials gelesen, dass die recv() Funktion die Socket-Nummer des Ziel Prozess braucht und die send() Funktion die des aktuellen von welchem gesendet wird.

    Deswegen weis ich nicht weiter, wie ich an das Zielsocket komme.



  • Weiß nicht ob du's schon gelesen hast, aber perfekt für dich wäre diese Seitehttp://www.c-worker.ch/tuts/select.php
    Wenn du dein Programm an den entscheidenen Stellen mit dem Tutorial vergleichst, kannst du eigentlich nichts falsch machen

    Grüße



  • Vielen Dank erstmal für die Antwort, ich werde mir die Seite mal ansehen.

    Aber was mein Problem bei recv() betrifft hat keiner eine Idee?

    MfG
    MaX


Anmelden zum Antworten