代码之家  ›  专栏  ›  技术社区  ›  TomTom

TCP:地址已在使用中异常-客户端端口的可能原因?无端口耗尽

  •  1
  • TomTom  · 技术社区  · 14 年前

    愚蠢的问题。我从一个连接到服务器的客户端获取这些信息。不幸的是,安装程序很复杂,调试也很复杂——我们已经没有选择了。

    环境: *客户机/服务器系统,均在同一台计算机上运行。客户机实际上是一个在特定时间执行某些数据库操作的服务。 * CnEncess来自于C通过OLeDB到一个EasySuff.JDBC驱动程序到一个定制的JDBC服务器,然后在C++中托管逻辑。是的,complex-但是第三方供应商决定通过jdbc接口公开服务器的扩展机制。在这里没什么可做的;)

    症状: 在(ir)固定的时间间隔中,我们从jdbc驱动程序中得到一个“address already in use:connect”。它们似乎来自我们运行的一个特定服务。

    现在,我读了所有关于港口枯竭的文章。这就是为什么我们现在有一个小工具在运行,它每分钟都会计算端口及其状态。上次发生这种情况时,我们使用了令人吃惊的370个端口,错误发生后,数量上升到了900个左右。我们已经修补了注册表(它是一台windows机器),允许超过5000个客户机端口的标准,但即便如此,我们离这个限制还很远。

    这就是我在这里问的原因。艾尼安还有什么别的原因?

    它是一台64位的Windows2003服务器。我能看到的唯一可能导致这种情况的另一件事是安装在服务器上的Symantec Endpoint Protection(但这个功能被认为是禁用的),而且它能够作为防火墙使用actinc,它可能会拦截网络流量。我不想过早地指向赛门铁克(如果指向赛门铁克可以被看作是这样的话),从而打开一罐蠕虫病毒。有人知道还有什么原因吗?

    谢谢

    2 回复  |  直到 14 年前
        1
  •  1
  •   Remy Lebeau    14 年前

    “address already in use”又名wsaeaddrinuse(10048),意思是当客户端套接字准备连接到服务器套接字时,它首先尝试将自己绑定到一个特定的本地IP/端口对,该对已被另一个套接字使用,或者是一个活动的套接字,或者是一个已关闭但仍在使用的套接字FD U等待状态。这与可用端口的数量无关。

        2
  •  -1
  •   Vanmachin    14 年前

    我在Windows 2000服务器上遇到了同样的问题,它的.NET应用程序连接到SQL Server 7.0。大约有10台服务器具有相同的配置,每天只有一台服务器显示多次此错误。通过一个小的测试程序,我可以通过在sql server监听端口上建立一个tcp连接来重现错误。运行电流( http://www.nirsoft.net/utils/cports.html )显示在1024-5000范围内仍然有大量可用端口。

    我没主意了,我想知道你是否找到了一个解决方案,因为你已经发布了你的问题。

    编辑:我终于找到了解决方案:一个蠕虫出现在服务器上(worm_downad.a),耗尽了本地端口而没有被注意到。