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:这两个参数增加或修改后,要重启操作系统才有效。
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:这两个参数增加或修改后,要重启操作系统才有效。
相关文章推荐
- TCP版backshell的VBS脚本代码
- TCP Wrappers防火墙介绍与封锁IP地址的方法
- c语言多进程tcp服务器示例
- win2003连接限制TCP连接限制
- PowerShell脚本开发之收发TCP消息包
- Nodejs创建TCP服务器 - king0222
- C#实现TCP连接信息统计的方法
- linux shell 脚本实现tcp/upd协议通讯(重定向应用)
- Android TCP 文件客户端与服务器DEMO介绍
- Android中实现TCP和UDP传输实例
- python实现可将字符转换成大写的tcp服务器实例
- php实现TCP端口检测的方法
- Java实现Socket的TCP传输实例
- 实现了基于TCP的Java Socket编程实例代码
- Java基于Tcp协议的socket编程实例
- python实现TCP服务器端与客户端的方法详解
- python检测远程服务器tcp端口的方法
- python实现简单的TCP代理服务器
- nginx搭建tcp代理服务器
- python网络编程之TCP通信实例和socketserver框架使用例子