boost asio duplex
-
Hallo,
Ich möchte Daten mit boost asio voll-duplex-mässig über eine TCP/IP-Verbindung übertragen, also mit separatem Lese-und Schreibthread. Sind da zwei separate Sockets auf unterschiedlichen Ports die einzige Lösung, oder gibt es eine Alternative? Ist es erlaubt, unterschiedliche Sockets auf den gleichen Endpoint zu verbinden? Socketprogrammierung ist leider noch Neuland für mich...
Gruss
Stefan
-
ein Socket reicht
-
Mit ASIO darf er zumindest nicht von zwei Threads gleichzeitig auf den selben (ASIO-) Socket zugreifen.
Mit den asynchronen ASIO-Funktionen + Synchronisierung lässt sich Full-Duplex auch mit nur einem Socket machen. Mit den synchronen Funktionen nicht unbedingt. (Einige der synchronen Funktionen sind in gewissen Fällen Thread-Safe, aber man muss verdammt aufpassen wenn man sich darauf verlassen möchte, um nicht unabsichtlich was zu verwenden, was doch nicht Thread-Safe ist)
Die Aussage "ein Socket reicht", ohne weitere Erklärung, ist also, freundlich ausgedrückt, irreführend.