1、在通过下列代码,把socket客户端连接socket服务端时:

Socket socket = new Socket(serverIp, Constant.PORT);

发生以下异常:

java.net.ConnectException: failed to connect to /192.168.43.203 (port 54321) from /:: (port 39516): connect failed: ECONNREFUSED (Connection refused)
    at libcore.io.IoBridge.connect(IoBridge.java:143)
    at java.net.PlainSocketImpl.socketConnect(PlainSocketImpl.java:142)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:390)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:230)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:212)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:436)
    at java.net.Socket.connect(Socket.java:621)
    at java.net.Socket.connect(Socket.java:570)
    at java.net.Socket.<init>(Socket.java:450)
    at java.net.Socket.<init>(Socket.java:218)
    at com.sswl.tool.fragment.WifiClientFragment$5.run(WifiClientFragment.java:87)
    at java.lang.Thread.run(Thread.java:919)
Caused by: android.system.ErrnoException: connect failed: ECONNREFUSED (Connection refused)
    at libcore.io.Linux.connect(Native Method)
    at libcore.io.ForwardingOs.connect(ForwardingOs.java:95)
    at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:136)
    at libcore.io.ForwardingOs.connect(ForwardingOs.java:95)
    at libcore.io.IoBridge.connectErrno(IoBridge.java:157)
    at libcore.io.IoBridge.connect(IoBridge.java:135)
	... 11 more

2、导致上述异常,主要是因为客户端socket所请求的服务端ip与端口并没有开启监听线程,排查方向主要有以下几个:

  • 有可能是该ip与端口对应的服务端监听线程没有成功开启或者已经崩溃;
  • 客户端socket连接的服务端ip或者端口有误
  • 客户端socket使用解析为错误IP的DNS名称进行连接;
  • 有可能被服务端的防火墙给屏蔽,不过这种可能性比较低
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐