我遇到了一个奇怪的行为。
该手册声称:“当两个套接字绑定到相同的端口号但在不同的显式接口上时,不存在冲突”。为什么系统在步骤 3 的以下情况下会失败?它是操作系统中的错误吗?(我在微软论坛上的帖子没有答案) 有什么解决方法吗?
- 步骤 1. 进程 A 绑定 127.0.1.1:88(默认)——OK
- 步骤 2. 进程 B 绑定 127.0.0.1:88(使用 SO_REUSEADDR)——OK
- 步骤 3. 进程 C 绑定 127.0.0.1:88 (with SO_REUSEADDR) — 失败 (10013 WSAEACCES)
注意:tcp 端口相同,接口不同且显式(在步骤 1 和 2-3 之间)。用户是一样的。
该问题出现在 Windows Vista(32 位)、Windows Server 2008(32 位)、Window Server 2008 R2(64 位)等。
在 Windows XP 中没关系:步骤 3 成功。
更新:仅供参考,同样的问题:Windows 7 套接字绑定行为与 XP 不同,带有重用地址套接字选项(WSAEACCES 10013 错误)