当您尝试从大于 5000 的 TCP 端口连接时收到错误 WSAENOBUFS (10055)


症状


如果您尝试从大于 5000 的端口 TCP 连接设置,本地计算机响应以下 WSAENOBUFS (10055) 错误消息:
由于系统缓冲区空间不足,或者因为队列已满,不能执行套接字上的操作。

解决方案


重要:此部分、 方法或任务包含一些介绍如何修改注册表的步骤。但是,如果不正确地修改了注册表,可能会出现严重的问题。因此,请确保仔细按照下列步骤操作。为增加保护,对其进行修改之前备份注册表。然后,您可以在出现问题时还原注册表。有关如何备份和还原注册表的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
322756如何备份和还原在 Windows 注册表


默认的临时 TCP 端口的最大数量是 5000"适用于"一节中包含的产品中。在这些产品中添加一个新参数。若要增加的最大临时端口数,请执行以下步骤:
  1. 启动注册表编辑器。
  2. 在注册表中,找到以下注册表子项,然后单击参数

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
  3. 编辑菜单上,单击新建,然后添加以下注册表项:
    值的名称: MaxUserPort
    值类型: 双字节
    值数据: 65534
    有效范围: 5000-65534 (十进制)
    默认值: 0x1388 (5000 十进制)
    说明: 此参数控制的程序从系统请求任何可用的用户端口时所使用的最大端口号。通常情况下,临时 (短暂) 端口 1024年的值和含 5000 之间分配。之后发布的安全公告 MS08-037,Windows Server 2003 的行为已更改,以便更好地匹配,Windows Server 2008 和 Windows Vista。有关 Microsoft 安全公告 MS08-037 的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

    951746 MS08-037: Windows Server 2008 中,Windows Server 2003 和 Windows 2000 服务器 (DNS 服务器端) 中的 DNS 安全更新的说明: 2008 年 7 月 8 日

    951748 MS08-037: Windows Server 2003 中,在 Windows XP 和 Windows 2000 服务器 (客户端) 中的 DNS 安全更新的说明: 2008 年 7 月 8 日

    953230 MS08-037: 在 DNS 中的漏洞可能允许欺骗

  4. 退出注册表编辑器,然后重新启动计算机。
注意:一个附加的 TCPTimedWaitDelay 注册表参数确定多长时间关闭的端口将等待,直到关闭的端口可以重复使用。

详细信息


有关相关主题的更多信息,请访问下面的 Microsoft 网站:

有关相关主题的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

对于 Windows 2000 或 Windows NT 120642 TCP/IP 和 NBT 配置参数

Windows XP 的314053 TCP/IP 和 NBT 配置参数

用于基于 x64 的 Microsoft Windows 版本的技术支持

如果您的硬件附带已安装的 Microsoft Windows x64 版本,您的硬件制造商提供了技术支持和帮助的 Windows x64 版本。在这种情况下,您的硬件制造商提供支持,因为 Windows x64 版本包含与您的硬件。您的硬件制造商可能通过特有的一些组件自定义的 Windows x64 版本安装。独特组件可能包括特定设备驱动程序,或者可能包括用于硬件性能达到最大的可选设置。如果您必须使用 Windows x64 版的技术帮助,Microsoft 将提供尽最大努力协助。但是,您可能需要与制造商直接联系。您的制造商最有资格来支持您的制造商在硬件所安装的软件。如果单独购买如 Windows Server 2003 x64 版本的 Windows x64 版本,请与 Microsoft 联系技术支持。

有关 Windows XP 专业 x64 版的产品信息,请访问下面的 Microsoft 网站:有关产品的基于 x64 的 Windows Server 2003 的版本,请访问下面的 Microsoft 网站: