突然之间,我的电脑不再让我绑定到套接字。昨晚它还在工作,当我在几个小时的编码后去测试一个功能时,什么都不会绑定。
其他事实:
- 相同的代码适用于我的其他 PC,因此它显然是我的主要开发机器所独有的。
- 绑定到 TCP 端口 8080(应用程序有一个迷你 HTTP 服务器)确实有效。
- 我编写的侦听相同 63000 范围端口的其他应用程序在这台计算机上也失败了。
这是一些失败的代码:
err = WSAStartup(wVersionRequested, &wsaData);
if(err == 0)
{
aSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if(aSocket != INVALID_SOCKET)
{
SOCKADDR_IN ReceiverAddr;
// The IPv4 family
ReceiverAddr.sin_family = AF_INET;
// Port no. 63939
ReceiverAddr.sin_port = htons(iPort);
// From all interface (0.0.0.0)
ReceiverAddr.sin_addr.s_addr = htonl(INADDR_ANY);
err = bind(aSocket, (SOCKADDR*)&ReceiverAddr, sizeof(ReceiverAddr));
if(err == 0)
{
我努力了:
- 禁用我的 Windows 防火墙(作为常见修复建议)
- 禁用 Windows Defender
- 以管理员身份运行应用程序
- 重新启动
- 禁用/启用我的网络驱动程序
- 重命名有问题的应用程序(以防防火墙设置为禁止)
- 恢复到应用程序的已知良好版本
- 尝试我编写的其他一些已知良好的网络应用程序(它们也因 10013 而失败)
- 在同一区域尝试不同的端口
- 将我的网络类型从“公共”更改为“家庭”
如果我运行netstat
,则没有其他应用程序使用我正在尝试侦听的端口(通常是 63000 区域内和周围的 TCP 和 UDP 端口)。再次快速netstat
检查,当前绑定的最高本地端口为 53843。
很确定我昨晚安装的唯一应用程序是 Kerbal Space Program,我无法想象它破坏了我的网络驱动程序。