我最近有一个非常奇怪的错误行为,我无法解释为什么会这样。我为自己编写了一个网络库(仍在进行中)。今天我的单元测试失败了,因为另一个应用程序正在使用这些端口。这是意料之中的,但它并没有像预期的那样失败。我正在查看的结果bind()
是 0。
handle = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
sockaddr_in address;
address.sin_family = AF_INET;
address.sin_addr.s_addr = INADDR_ANY;
address.sin_port = htons(port);
if (bind(handle, (const sockaddr*)&address, sizeof(sockaddr_in)) < 0)
{
throw std::runtime_error("failed to bind socket");
}
(这是完整的代码。)
我的经验说bind()
,如果它正在使用的端口会返回一个错误。我基本上错了吗?
有关详细信息,我们正在谈论 Windows 7 上的 winsock;使用 MinGW 构建。