Ошибка java.net.ConnectException: Connection refused – как исправить?
Ошибка java.net.ConnectException: Connection refused является одним из самых распространенных сетевых исключений в Java. Эта ошибка возникает, когда вы работаете с архитектурой клиент-сервер и пытаетесь установить TCP-соединение от клиента к серверу.
Соединение также происходит в случае RMI (удаленного вызова метода), потому что RMI также использует протокол TCP-IP. При написании кода клиентского сокета на Java вы всегда должны обеспечивать правильную обработку этого исключения.
В этом руководстве по Java вы узнаете, почему возникает исключение при отказе в соединении и как решить проблему.
Причины
Отказ в соединении – это явный случай, когда клиент пытается подключиться через порт TCP, но не может это сделать. Вот некоторые из возможных причин, почему это происходит:
Да, возможно, что они не подключены к локальной сети, Интернету или любой другой сети.
Вторая наиболее распространенная причина – сервер не работает. Вы можете использовать следующие сетевые команды, например, ping, чтобы проверить, работает ли сервер.
Это еще одна распространенная причина возникновения «java.net.ConnectException: соединение отклонено», когда сервер работает, но видит другой порт. Трудно разобраться в этом случае, пока вы не проверите конфигурацию.
Почти каждая корпоративная сеть защищена. Если вы подключаетесь к сети других компаний, вам нужно убедиться, что они разрешают друг другу IP-адрес и номер порта.
Проверьте последнюю конфигурацию на стороне клиента и сервера, чтобы избежать исключения отказа в соединении.
TCP является базовым протоколом для многих высокоуровневых протоколов, включая HTTP, RMI и другие. Нужно убедиться, что вы передаете правильный протокол, какой сервер ожидает.
Если вам интересно узнать больше об этом, то изучите книгу по сетевым технологиям, такую как Java Network Programming (4-е дополнение), написанную Гарольдом Эллиоттом Расти.
Как решить java.net.ConnectException: соединение отказано
Простое решение состоит в том, чтобы сначала выяснить фактическую причину исключения. Здесь важнее всего подход к поиску правильной причины и решения. Как только вы узнаете реальную причину, вам, возможно, даже не потребуется вносить какие-либо существенные изменения.
Вот несколько советов, которые могут помочь исправить ошибку java.net.ConnectException: Connection refused:
- Сначала попытайтесь пропинговать целевой хост, если хост способен пинговать, это означает, что клиент и сервер находятся в сети.
- Попробуйте подключиться к хосту и порту сервера, используя telnet. Если вы можете подключиться, значит что-то не так с вашим клиентским кодом. Кроме того, наблюдая за выводом telnet, вы узнаете, работает ли сервер или нет, или сервер отключает соединение.
Средняя оценка 1.5 / 5. Количество голосов: 33
Спасибо, помогите другим — напишите комментарий, добавьте информации к статье.
Видим, что вы не нашли ответ на свой вопрос.
Напишите комментарий, что можно добавить к статье, какой информации не хватает.
Java sql exception connection refused
Applies to: ManageEngine Applications Manager 9, Hyper-V, SQL Server 2008 SP1 CU4.
We installed a SQL Server 2008 64-bit instance on a Hyper-V virtual machine,
and then tried to install ManageEngine Applications Manager 9 on another
Hyper-V virtual machine that will access the SQL Server instance.
We were unable to install ManageEngine Applications Manager 9 (AppManager 9)
and found the following errors on the logs generated by the setup program:
java.sql.SQLException: Network error IOException: Connection refused:
connect
at
net.sourceforge.jtds.jdbc.ConnectionJDBC2.(ConnectionJDBC2.java:385)
at
net.sourceforge.jtds.jdbc.ConnectionJDBC3.(ConnectionJDBC3.java:50)
at net.sourceforge.jtds.jdbc.Driver.connect(Driver.java:182)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at jdbc.CreateSchema.createDataBaseAMDB_MSSQL(CreateSchema.java:154)
at jdbc.CreateSchema.instantiateConnection(CreateSchema.java:197)
at jdbc.CreateSchema.init(CreateSchema.java:84)
at jdbc.CreateSchema.main(CreateSchema.java:93)
at
com.adventnet.appmanager.server.startup.StartServer.startmysql(StartServer.j
ava:1268)
at
com.adventnet.appmanager.server.startup.StartServer.main(StartServer.java:86
9)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at
org.tanukisoftware.wrapper.WrapperSimpleApp.run(WrapperSimpleApp.java:136)
at java.lang.Thread.run(Unknown Source)
In this case, this was an exception thrown by jTDS when it couldn’t connect
to the remote instance of SQL Server over TCP/IP port 1433. TCP/IP was not enabled on the SQL Server instance.
Perform the following steps to enable TCP/IP on the SQL Server instance:
1. Go to Start -> All Programs -> Microsoft SQL Server 2008 -> SQL Server
Configuration Manager
2. In SQL Server Configuration Manager, expand SQL Server Network
Configuration.
3. Click Protocols for MSSQLSERVER.
4. In the details pane, right-click the TCP/IP protocol, and then click
Enable.
5. Back in the console pane, click SQL Server Services.
6. In the details pane, right-click SQL Server (MSSQLSERVER), and then click
Restart, to stop and restart the SQL Server service.
If the problem continue after enabling TCP/IP, then verify your firewall is not blocking TCP/IP port 1433.