c++ - 为什么操作系统更改了我的数据包的分配出站端口?

标签 c++ windows boost tcp port

我的C++软件正在使用特定的传出端口(根据IANA端口分配标准)为服务器创建syn数据包(使用boost)。
我选择出站端口用于内部目的。

由于某种原因,在多台计算机上检查了我的应用程序后,在一台特定的计算机上出现以下问题:

正在使用的传出端口不是我分配的端口-好像OS(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());
}

最佳答案

显然,计算机上安装了2个防病毒软件,其中一个已更改了传出端口(Kaspersky)。

关于c++ - 为什么操作系统更改了我的数据包的分配出站端口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58679145/

相关文章:

c++ - 在大型 C++ 遗留应用程序中查找 "dead code"

c++ - 使用 Boost.Process 进行异步调用 std::future.get() 后程序挂起

C++防止某个类的派生类对两个类的多重继承

c++ - 使用递归反向链表

c++ - 对于类构造函数,通过括号或等号赋值有什么区别?

windows - 即使以管理员身份登录也无法删除文件

Windows批处理文件在树中查找重复项

windows - 如何使用 Windows cmd 获取总物理内存

c++ - 创建一个正则表达式来 boost "nam12 = 34.24"

c++ - 错误:使用已删除的函数 boost::filesystem3::directory_iterator