尝试从大于 5000 的 TCP 端口进行连接时,会收到错误“WSAENOBUFS (10055) ”

本文有助于修复尝试从大于 5000 的 TCP 端口进行连接时出现的错误“WSAENOBUFS (10055) ”。

适用于:Windows Server 2012 R2、Windows 10 - 所有版本
原始 KB 编号: 196271

症状

如果尝试从大于 5000 的端口设置 TCP 连接,则本地计算机会响应以下 WSAENOBUFS (10055) 错误消息:

无法对套接字执行操作,因为系统缺乏足够的缓冲区空间或队列已满。

解决方案

重要

此部分(或称方法或任务)介绍了修改注册表的步骤。 但是,注册表修改不当可能会出现严重问题。 因此,请务必严格按照这些步骤操作。 为了加强保护,应先备份注册表,再进行修改。 如果出现问题,可以还原注册表。 有关如何备份和还原注册表的更多信息,请单击下面的文章编号查看 Microsoft 知识库中相应的文章:
322756 如何在 Windows 中备份和还原注册表

在“适用”部分中包含的产品中,默认的最大临时 TCP 端口数为 5000。 已在这些产品中添加了一个新参数。 若要增加临时端口的最大数目,请执行以下步骤:

  1. 启动注册表编辑器。

  2. 在注册表中找到以下子项,然后单击“参数:

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

  3. “编辑” 菜单上,单击 “新建”,然后添加以下注册表项:
    值名称:MaxUserPort
    值类型:DWORD 值数据:65534 有效范围:5000-65534 (小数) 默认值:0x1388 (5000 小数) 说明:此参数控制程序从系统请求任何可用用户端口时使用的最大端口号。 通常,临时 (短期) 端口在 1024 和 5000(含 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 Server (DNS 服务器端) 中 DNS 的安全更新说明:2008 年 7 月 8 日

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

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

  4. 退出注册表编辑器,然后重启计算机。

    注意

    另一个 TCPTimedWaitDelay 注册表参数确定关闭的端口等待多长时间,直到可以重复使用已关闭的端口。

更多信息

有关相关主题的详细信息,请访问以下 Microsoft 网站:

https://technet.microsoft.com/library/bb726981.aspx
有关相关主题的详细信息,请单击以下文章编号以查看 Microsoft 知识库中的文章:

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

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

如果硬件随已安装的 Microsoft Windows x64 版本一起提供,则硬件制造商会为 Windows x64 版本提供技术支持和帮助。 在这种情况下,硬件制造商会提供支持,因为硬件已随附 Windows x64 版本。 硬件制造商可能使用单独组件自定义了 Windows x64 版本的安装。 单独组件可能包括特定设备驱动程序,也可以包括可选设置以最大限度提高硬件性能。 如果你必须获得 Windows x64 版本的技术帮助,Microsoft 将提供合理的工作帮助。 但是,你可能需要直接与制造商联系。 制造商最有资格为他们在硬件上安装的软件提供支持。 如果单独购买了 Windows x64 版本(如 Windows Server 2003 x64 版),请联系 Microsoft 以获取技术支持。