【发布时间】:2010-03-05 04:30:31
【问题描述】:
在 C++ 中,当我运行时(红色警报!伪代码)
bind(s1, <local address:port1234>)
bind(s2, <local address:port1234>)
在两个不同的 UDP 套接字上(s1 和 s2 每个都是通过调用 socket() 创建的)我遇到了问题。在 Linux (Ubuntu) 中,双重绑定似乎没问题。然而,在 Windows 中,双重绑定失败,对同一地址的第二次调用 bind() 返回 != 0。
我想在我的 Linux 机器上获得我在 Windows 上的行为。是否有一些设置可以让 Linux 上的“端口繁忙”?
【问题讨论】:
-
你能贴出真实的代码吗?直到你问我很确定你在第二次绑定时确实会出错。
-
我也是这么想的,所以我测试了一下。在 socket() 调用之后,第二个 bind() 到同一端口返回 EADDRINUSE。