您的位置:首页 > 理论基础 > 计算机网络

DGL5319A: Local address already in use :: [Remote host name]125.0.167.85[Port]x (STATE) : WSAEADDRI

2016-01-11 21:55 776 查看
在做项目的时候,需要在短时间之内调用 IBM  II4c 接口,上传影像到 CM 中,所以在客户端中开了很多个线程进行上传图像。不料,客户端工作一段时间后,报以下错误:

2012-11-10 19:15:45X     !!! Exception !!!    X

2012-11-10 19:15:45       Name: DKXDOError

2012-11-10 19:15:45 Message ID: 5319

2012-11-10 19:15:45Error State: WSAEADDRINUSE

2012-11-10 19:15:45 Error Code: 10048

2012-11-10 19:15:45 Location 0: C:\sbroot\src\eip\dk\icm\pXDOErrorICM.cpp::pXDOErrorICM::pXDOErrorICM[54]

2012-11-10 19:15:45  Message 0: DGL5319A: Local address already in use :: [Remote host name]125.0.167.85[Port]x  (STATE) : WSAEADDRINUSE

2012-11-10 19:15:45   Messages: <none>

2012-11-10 19:15:45----------------------------------------

Local address already in use ,表示本地地址已经正在被使用。原因是IBM ii4c 上传图像到 CM 的c++ api  和 服务器采用的是

短连接,每上传一笔业务,便申请一个tcp连接,上传完后,立刻又把连接关闭。但是,我们知道,tcp/ip 连接的关闭过程是

有时间要求的,需要经过4次握手协议,才可完整的关闭。如果,当应用程序申请使用那种没有完全关闭的连接的时候,操作

系统将会报
Local address already in use 错误。为了解决这个问题,IBM 工程师给出如下解决方法:

、在本地操作系统注册表中增加以下参数值:

注册表路径为:HKey_local_machine->system->services->tcpip->Parameters

        


点击 Parameters,将右边将出现
          


用红线标出来的两个参数值就是要增加的。
若本地计算机注册表中两个值已经存在,则把他们的值改为如图所示;如没有,则加上两个参数和他们对应的值。
          MaxUserPort 的值表示当应用程序向系统请求可用的端口时,TCP/IP可分配的最大端口号。如果系统显示建立连接时出现异常,那么有可能是由于匿名(临时)端口数不够导致的,特别是当系统打开大量端口来与Web
service、数据库或其他远程资源建立连接时。

  该项的缺省值是十进制的5000,这也是系统允许的最小值。Windows默认为匿名(临时)端口保留的端口号范围是从1024到5000。为了获得更高的并发量,建议将该值至少设为32768以上,甚至设为理论最大值65534,特别是对于模拟高并发测试环境的Client具有积极的意义。
         TcpTimedWaitDelay:确定 TCP/IP 可释放已关闭连接并重用其资源前,必须经过的时间。关闭和释放之间的此时间间隔通称 TIME_WAIT 状态或两倍最大段生命周期(2MSL)状态。此时间期间,重新打开到客户机和服务器的连接的成本少于建立新连接。减少此条目的值允许 TCP/IP 更快地释放已关闭的连接,为新连接提供更多资源。如果运行的应用程序需要快速释放和创建新连接,而且由于
TIME_WAIT 中存在很多连接,导致低吞吐量,则调整此参数。

主要目的是增加用户可以申请的端口数 和  使 tcp/ip更快的释放已关闭的连接。,增加吞吐量。
 
PS:这两个参数增加或修改后,要重启操作系统才有效。
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息