TCP Socket Programmierung



  • Hallo:

    Eine grundlegende Frage zur Socketprogrammierung: Manche würden es auch als NewbFrage bezeichnen aber das ist jetzt ja egal!

    Also ich hab mir schon ein Socket Tutorial reingezogen, das ganz einfach eine Message zwischen Server und Client austauscht. das funktioniert ja alles wunderbar.

    Ich bein echter Anfänger in C++ darum kommt jetzt meine Frage:

    Wie mach Ich das, dass ich auf meine TCP Ports horche (listen) aber nebenbei trotzdem das Programm an anderen Stellen bedienen kann???

    Anders ausgedrückt: ich habe Funktionen die ausgeführt werden sollen wenn eine TCP Message ankommt, aber meine Applikation soll ja nicht nur die gnaze Zeit auf die TCP Ports horchen sondern auch was anderes tun???

    Wie mach ich das?

    mfG Walsi



  • mit select oder threads



  • Threads: das sagt mir zumindest etwas so weit, dass es sie geht; hab ich schon mal gehört.

    Abes was ist mit Select gemeint, das hab ich noch nie gehört.

    Welche dieser beiden Lösungen gestaltet sich einfacher???

    mfG Michael



  • Stichwort: Threads

    P.S:
    select ist ein Socket-Befehl, mit dem man mehrere Sockets überwachen (horchen) kann, siehe z.B. http://www.pc-adviser.de/socket_programmierung.html



  • siehe msdn http://msdn2.microsoft.com/en-us/library/ms740141.aspx

    select sollte das einfachere sein



  • Als Anfänger würde ich nicht mit sowas anfangen. Hab ich früher auch gemacht und es kamm nur Gefrickel bei heraus. Such dir am besten eine Library für raus die das sowieso asynchron macht, z.B. boost::asio. Je nachdem was du machen willst.



  • Guten Morgen!

    So ich hab mir jetzt meine Problematik mit der Socket Programmierung weiter betrachtet und bin zu dem Schluß gekommen, dass ich es mit Threads machen werde.

    So schwierig erscheint es mir nicht, ich habe auch eine Beispiel Applikation über die ich viel in Erfahrung bringen kann.

    Jetzt hab ich noch eine spezielle Frage: Muss ich bei der Threadprogrammierung unter Linux auf irgendetwas besonderes aufpassen??? Das Beispiel, dass ich mir ansehe ist mit VS2003 unter Windows programmiert worden. Nun denke ich mir vielleicht, dass gerade die Threadspezifische Include Datei (<process.h>) unter Linux anders heißt?! Oder gibt es andere Besonderheiten?

    Oder verhält es sich in Linux so wie unter Windows komplett gleich?

    EDIT: Ist vielleicht das was ich benötige bzw. das wovon ich spreche <pthread.h>??

    mfG Walsi



  • Das kommt darauf an, welches Beispiel du da jetzt hattest. Generell wird es schon anders sein, wenn du OS-spezifische APIs verwendest.
    Du könntest dir auch mal die Thread-API von boost angucken, die ist plattformunabhängig.



  • Danke für die Antwort, hab mich inzwischen dafür entschieden, dass ich es mit Qt4 lösen werde.

    mfG



  • Einige nette Details zur Socket Programmierung liefern auch Zotteljedis Sockettipps

    mfg Pumu


Anmelden zum Antworten