Verwenden Sie das gleiche udp-socket für async-senden/empfangen

Ich verwenden die gleiche Buchse in meinem udp server, um Daten zu empfangen, die von clients auf irgendeinem port, und später, nach der Bearbeitung von Anfragen zu reagieren, um clients die Verwendung von ip -:: ud::socket ::async_send_to

Erhalten, ist getan async mit async_receive_from auch. Die Buchse verwendet denselben ioService (es ist die gleiche Buchse, nachdem alle)
Die Dokumentation ist nicht eindeutig, wenn man haben kann, in einem Augenblick, in der gleichen udp-socket Datagramme empfangen von client A (bei asynchronen Weg) und möglicherweise senden Sie ein weiteres Datagramm an client B (async gesendet) in der gleichen Zeit
Ich vermute, das könnte zu Problemen führen. Ich landete mit der gleichen Buchse für Antworten, denn ich konnte nicht binden Sie einen anderen socket an den gleichen server-port, während die Beantwortung anderer client.

Wie kann ich binden einen anderen sockel auf demselben server port?

BEARBEITEN. Ich versuche, Sie zu binden, die zweite udp-socket an den gleichen UDP-port mit:

socket(ioService, boost::asio::ip::udp::endpoint(boost::asio::ip::udp::v4(), port))

Wenn ich das erste mal (verbindlich für server "erhalten" - Buchse) ist es OK, aber zu schaffen versuchen einem anderen socket zweiten mal gefällt, meldet es Fehler bei bind (asio wirft exception)

Bitte geben Sie Ihre eigentliche Frage. Ist Ihr setup funktioniert, und Sie sind auf der Suche nach Bestätigung, dass es ok ist design? Oder ist es nicht funktioniert, und wenn nicht, welche Fehler kann man beobachten? Oder du fragst Sie, wie zu binden eine andere Buchse stecken, um den server-port?
Ist es möglich, binden einen anderen sockel auf demselben server port ? So würde ich verschiedene sockets für senden von replays. Was passiert ist, ist, dass ich denke mein setup server verursachen kann Störung.
Bitte Bearbeiten Sie die Frage zu klären, anstatt das hinzufügen von Kommentaren
Ich nehme an, dass die zentrale Frage hier ist versucht zu binden, mehr als einen socket mit dem gleichen port, das ist einfach nicht möglich und sinnlos.
Es ist tatsächlich möglich, mit UDP über SO_REUSEADDR: aber ich Stimme zu, dass es sinnlos ist. OP: die Steckdosen sind voll-duplex ganzen Weg hinunter zu dem Metall: Sie kann Lesen und schreiben gleichzeitig.

InformationsquelleAutor Ghita | 2012-09-03

Schreibe einen Kommentar