Программное обеспечение C ++ создает синхронизирующие пакеты (с использованием boost) для моего сервера с определенными исходящими портами (в соответствии со стандартами назначения портов IANA). Я выбираю исходящие порты для внутренних целей.
По какой-то причине после того, как я проверил свое приложение на многих машинах, на одной конкретной машине возникла следующая проблема:
Исходящий порт, который являетсяиспользуется не тот, который я назначил - похоже, ОС (Windows 10) меняет его.
В чем может быть проблема?
Ниже приведен соответствующий код, который я использую для назначенияконкретный исходящий порт:
std::string exceptionFormat = "exception. Error message: ";
error_code socket_set_option_error_code;
socket->set_option(tcp::socket::reuse_address(true), socket_set_option_error_code);
if (socket_set_option_error_code) {
throw SocketException("Got socket reuse set option " + exceptionFormat + socket_set_option_error_code.message());
}
const auto source_endpoint = tcp::endpoint(tcp::v4(), source_port);
error_code bind_socket_error_code;
socket->bind(source_endpoint, bind_socket_error_code);
if (bind_socket_error_code) {
throw SocketException("Got socket bind " + exceptionFormat + bind_socket_error_code.message());
}