c++ - 两个应用程序如何监听一个端口?

标签 c++ networking boost network-programming boost-asio

我正在编写几个使用 Boost.ASIO 与网络通信的应用程序。突然,由于错误,他们两个在配置中获得了相同的端口,并且他们都成功开始监听同一端口。这是来自netstat -na输出

TCP 0.0.0.0:40000 0.0.0.0:0 LISTENING
TCP 0.0.0.0:40000 0.0.0.0:0 LISTENING

怎么会这样呢?两个不同的应用程序正在使用同一个 TCP 端口!

最佳答案

如果套接字是使用标志 SO_REUSEADDR 打开的,则这是可能的在 Windows 上。不幸的是,SO_REUSEADDR 标志在 Windows 上与 *nix 上具有不同的语义,这允许这种行为。

如果您担心其他应用程序可能会尝试监听您正在使用的端口,则可以使用 SO_EXCLUSIVEADDRUSE 标志。如果您控制所有打开套接字的应用程序,请确保您没有使用 SO_REUSEADDR 标志。

关于c++ - 两个应用程序如何监听一个端口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17026460/

相关文章:

c++ - 使用序列容器解析命令行选项?

c++ - 如何桥接 Python 和 C++

c++ - pthread_key_create 析构函数未被调用

c++ - C/C++ : adding 0

c++ - 如何在 UnrealEngine 中对非 2 的幂纹理进行下采样?

python - RabbitMQ 是否能够将消息传递给特定的客户端?或者我必须在客户端执行这些检查吗?

c - 如何停止自己的广播消息?

c++ - 如何读取目录中最后修改的文件的文件名?

java - 使用 Android 扫描 LAN 网络的最佳方式

c++ - C++ 中纯虚拟容器接口(interface)的迭代器