Boost UDP Socket Problem unter Unix - Bind: Adresse wird bereits verwendet

Zunächst weiß ich, dass es mehrere andere Themen zum selben Thema gibt, aber ich konnte in diesen Themen nichts finden, was mir helfen könnte, also werde ich versuchen, mich auf meine Situation zu konzentrieren.

Ich habe ein einfaches UDP-Client / UDP-Server-Paar eingerichtet, das für das Senden von Daten zwischen mehreren parallelen Simulationen zuständig ist. Das heißt, jede Instanz des Simulators wird in einem separaten Thread ausgeführt und sendet Daten über einen UDP-Socket. Im Master-Thread wird der Server ausgeführt und leitet die Nachrichten zwischen den Simulationen weiter.

Der (für dieses Problem) wichtige Teil des Servercodes sieht folgendermaßen aus:

UDPServer::UDPServer(boost::asio::io_service &m_io_service) :
   m_socket(m_io_service, udp::endpoint(udp::v4(), PORT_NUMBER)),
   m_endpoint(boost::asio::ip::address::from_string("127.0.0.1"), PORT_NUMBER)
{
   this->start_receive();
};

void UDPServer::start_receive() {

   // Set SO_REUSABLE to true
   boost::asio::socket_base::reuse_address option(true);
   this->m_socket.set_option(option);

   // Specify what happens when a message is received (it should call the handle_receive function)
   this->m_socket.async_receive_from(   boost::asio::buffer(this->recv_buffer),
                                        this->m_endpoint,
                                        boost::bind(&UDPServer::handle_receive, this, boost::asio::placeholders::error, boost::asio::placeholders::bytes_transferred));

};

Dies funktioniert auf meiner Windows-Workstation einwandfrei.

Die Sache ist; Ich möchte dies auf einem Linux-Cluster ausführen können, weshalb ich es kompiliert und versucht habe, es auf einem Cluster-Knoten auszuführen. Der Code wurde problemlos kompiliert, aber wenn ich versuche, ihn auszuführen, erhalte ich die Fehlermeldung

bind: address already in use

Ich verwende eine Portnummer über 1024 und habe überprüft, dass sie nicht von einem anderen Programm verwendet wird. Und wie oben zu sehen ist, habe ich auch das @ gesetreuse_address -Option, also weiß ich wirklich nicht, was sonst noch falsch sein könnte.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage