【问题标题】:How is it possible for two applications to listen on one port? [duplicate]两个应用程序怎么可能监听一个端口? [复制]
【发布时间】:2013-06-10 14:38:17
【问题描述】:

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

TCP 0.0.0.0:40000 0.0.0.0:0 监听
TCP 0.0.0.0:40000 0.0.0.0:0 监听

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

【问题讨论】:

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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-27
    • 2011-04-08
    • 1970-01-01
    • 2023-03-09
    • 2021-01-09
    • 2013-06-17
    • 2013-11-05
    • 1970-01-01
    相关资源
    最近更新 更多