如何处理ECONNREFUSED连接?

时间:2009-07-09 09:36:46

标签: solaris connect

我们有一个进程挂起,并且桁架显示它也尝试连接但失败并且错误ECONNREFUSED。 手册页说明了以下内容,但为什么它一次又一次遭到拒绝?

 ECONNREFUSED            The attempt to  connect  was  force-
                         fully  rejected. The calling program
                         should close(2) the socket  descrip-
                         tor,      and      issue     another
                         socket(3SOCKET) call to obtain a new
                         descriptor before attempting another
                         connect() call.

truss -p 2145

/ 3:lwp_park(0x00000000,0)(睡觉......)

/ 2:nanosleep(0xFFFFFFFF7B5FBE60,0xFFFFFFFF7B5FBE50)(睡觉......)

/ 2:nanosleep(0xFFFFFFFF7B5FBE60,0xFFFFFFFF7B5FBE50)= 0

/ 2:so_socket(PF_INET,SOCK_STREAM,IPPROTO_TCP,“”,SOV_DEFAULT)= 17

/ 2:fcntl(17,F_SETFD,0x00000001)= 0

/ 2:connect(17,0xFFFFFFFF7B5FBF40,16,SOV_DEFAULT)Err#146 ECONNREFUSED

/ 2:关闭(17)= 0

/ 2:nanosleep(0xFFFFFFFF7B5FBE60,0xFFFFFFFF7B5FBE50)(睡觉......)

/ 2:nanosleep(0xFFFFFFFF7B5FBE60,0xFFFFFFFF7B5FBE50)= 0

/ 2:so_socket(PF_INET,SOCK_STREAM,IPPROTO_TCP,“”,SOV_DEFAULT)= 17

/ 2:fcntl(17,F_SETFD,0x00000001)= 0

/ 2:connect(17,0xFFFFFFFF7B5FBF40,16,SOV_DEFAULT)Err#146 ECONNREFUSED

/ 2:关闭(17)= 0

/ 2:nanosleep(0xFFFFFFFF7B5FBE60,0xFFFFFFFF7B5FBE50)(睡觉......)

2 个答案:

答案 0 :(得分:2)

它有时可以从这台机器运行然后开始失败,还是每次都返回错误?它是从某些机器而不是其他机器上运行的吗?

服务器程序可能已经崩溃或关闭了侦听套接字。在服务器上尝试“netstat -af inet”以确保该端口上存在处于LISTEN状态的套接字,并检查该端口上的当前连接数。服务器进程ID上的Solaris命令“pfiles pid ”也可用于验证服务器是否仍然打开侦听套接字,并检查当前的客户端连接数。如果正在建立许多连接,请确保listen()积压已足够。在客户端上的-vall命令中添加truss选项,以显示连接的地址和端口,以确保它们正确无误。还可以尝试从服务器计算机进行相同的连接,以排除任何网络,防火墙或NAT问题。

答案 1 :(得分:0)

防火墙也许?有很多潜在的原因。