案例:使用域名访问服务器,由于服务器的域名对应于多个ip,其中有一个ip没监听8080端口,客户端访问时只是随机取其一访问,导致不能每次都访问成功,经常报Connection refused
现在服务器把两个ip都开启8080端口,就没问题了
一般来说,是访问服务器的参数写得不对。参数不对有两种可能:a、客户端写错了 b、服务器没在监听这个端口!
异常打印:
Caused by: java.net.ConnectException: failed to connect to xxx.xxx.x.x after 3000ms: isConnected failed: ECONNREFUSED (Connection refused)
at libcore.io.IoBridge.isConnected(IoBridge.java:273)
at libcore.io.IoBridge.connectErrno(IoBridge.java:188)
at libcore.io.IoBridge.connect(IoBridge.java:130)
at java.net.PlainSocketImpl.socketConnect(PlainSocketImpl.java:129)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:356)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:356)
at java.net.Socket.connect(Socket.java:616)
参考文章: https://javarevisited.blogspot.com/2013/02/java-net-ConnectException-Connection-refused.html#axzz5KBHV4ZRR
https://www.cnblogs.com/cheerfulness/p/BUG_4.html
可能原因:
java.net.ConnectException: Connection refused Error – Possible reasons
1) Client and Server, either or both of them are not in the network.
Yes it's possible that they are not connected to LAN or internet or any other network, in that case, Java will throw
"java.net.ConnectException: Connection refused" exception on client side.
Read more: https://javarevisited.blogspot.com/2013/02/java-net-ConnectException-Connection-refused.html#ixzz5KBIOc300
2) Server is not running
The second most common reason is the server is down and not running. In that case, also you will get java.net.ConnectException: Connection refused error.
What I don't like is that the message it gives, no matter what is the reason it prints the same error. By the way, you can use following networking commands
e.g. ping to check if the server is running and listening on the port.
Read more: https://javarevisited.blogspot.com/2013/02/java-net-ConnectException-Connection-refused.html#ixzz5KBISKVQ2
3) The server is running but not listening on the port, a client is trying to connect.
This is another common cause of "java.net.ConnectException: Connection refused", where the server is running but listening on the different port.
It’s hard to figure out this case, until, you think about it and verify the configuration. If you
are working on a large project and have a hierarchical configuration file, Its possible that either default configuration
is taking place or some other settings are overriding your correct setting.
Read more: https://javarevisited.blogspot.com/2013/02/java-net-ConnectException-Connection-refused.html#ixzz5KBIY54E4
4) Firewall is not permitted for host-port combination
Almost every corporate network is protected by firewalls. If you are connecting to some other companies network e.g.
opening an FIX session to the broker, in any Electronic Trading System, then you need to raise firewall
request from both sides to ensure that they permit each other's IP address and port number. If the firewall is not allowing
connection then also you will receive same java.net.ConnectException: Connection refused exception in Java application.
Read more: https://javarevisited.blogspot.com/2013/02/java-net-ConnectException-Connection-refused.html#ixzz5KBIcIZwr
5) Host Port combination is incorrect.
This could be another reason of java.net.ConnectException: Connection refused: connect.It’s quite possible that either you are
providing incorrect host port combination or earlier host port combination has been changed on the server side. Check the
latest configuration on both client and server side to avoid connection refused exception.
Read more: https://javarevisited.blogspot.com/2013/02/java-net-ConnectException-Connection-refused.html#ixzz5KBIoFxPp
6) Incorrect protocol in Connection String
TCP is underlying protocol for much high-level protocol including HTTP, RMI and others. While passing connection
string, you need to ensure that you are passing correct protocol, which server is expecting e.g. if server has exposed
its service via RMI than connection string should begin with rmi://
Read more: https://javarevisited.blogspot.com/2013/02/java-net-ConnectException-Connection-refused.html#ixzz5KBIx9qa1
网友评论