【问题标题】:C++: Windows Socket Error 10013C++:Windows 套接字错误 10013
【发布时间】:2014-05-17 06:10:16
【问题描述】:

突然之间,我的电脑不再让我绑定到套接字。昨晚它还在工作,当我在编码几个小时后去测试一个功能时,什么都不会绑定。

其他事实:

  • 相同的代码可以在我的其他 PC 上运行,因此它显然是我的主要开发机器所独有的。
  • 绑定到 TCP 端口 8080(应用程序有一个 mini-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,我无法想象它破坏了我的网络驱动程序。

【问题讨论】:

  • 你在不同的机器上测试过吗?你说你测试了另一个应用程序,它也失败了,所以它可能不是你的代码。也许远程机器不接受你的连接?
  • 您是否考虑过查找错误代码的含义?
  • EJP:错误代码是 WSAEACCESS link,这就是为什么我最初的努力围绕着杀死防火墙和防病毒。 Devolus:相同的应用程序似乎可以在我的其他计算机上运行。虽然我只是在监听传入的连接,所以这不是远程机器的问题。传出连接似乎工作正常,因为我可以使用我的应用程序的客户端部分毫无问题地连接到远程服务器。
  • 所以我刚刚卸载了 Kerbal Space Program 并重新启动,现在一切正常。打算重新安装它,看看它们是否再次损坏,因为我不敢相信这不仅仅是巧合。
  • “我昨晚安装的唯一应用是 Kerbal Space Program,我无法想象它破坏了我的网络驱动程序。” - Windows 世界中有很多我们无法想象的事情,但仍然会发生。如果这是你系统中唯一的变化,那么里面的福尔摩斯告诉我这可能是原因。

标签: c++ sockets winsock


【解决方案1】:

回答编辑:我的新理论是 NetBalancer,因为我刚刚卸载了它,会在我开始遇到问题的时候安装它,并且从那时起进行了 2 天的 10013 免费开发。因为我认为它把它的钩子深深地绑在了网络堆栈中,所以它也很有意义。

如果他们回来会继续更新...

【讨论】:

  • 几个月后的更新:这似乎是网络驱动程序问题。重新启动后,一切正常。但是在某个时间点,它会开始进入 10013 状态,我将无法打开套接字。
  • 一年后的更新:我刚刚卸载了 NetBalancer,我想我会在我开始遇到问题的时候安装它。我现在有两天的 10013 免费开发,经过大约一周的重新启动甚至没有清除它。
  • Windows10 上 Python 出现同样的症状; SysInternals.com TcpView 向我展示了 cav.exe 正在失控地绑定本地端口。这是 Pulse Secure 的一部分(cav = Cloud App Visibility)。我停止了 Pulse Secure Service,cav.exe 消失了,我的绑定都开始工作了。感谢您向我指出这样的第 3 方问题。
猜你喜欢
  • 1970-01-01
  • 2011-03-19
  • 2016-10-03
  • 1970-01-01
  • 1970-01-01
  • 2017-12-22
  • 2011-07-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多