Java.net.ConnectException: время ожидания подключения: connect?
Я использовал RMI в своем коде:
import java.rmi.*;
public interface AddServerIntf extends Remote {
double add(double d1,double d2) throws RemoteException;
}
import java.rmi.*;
import java.rmi.server.*;
public class AddServerImpl extends UnicastRemoteObject implements AddServerIntf {
public AddServerImpl() throws RemoteException {
}
public double add(double d1,double d2) throws RemoteException {
return d1+d2;
}
}
import java.net.*;
import java.rmi.*;
public class AddServer {
public static void main(String args[]) {
try {
AddServerImpl addServerImpl=new AddServerImpl();
Naming.rebind("AddServer",addServerImpl);
} catch(Exception exc) {
System.out.println(exc);
}
}
}
import java.rmi.*;
public class AddClient {
public static void main(String args[]) {
try {
String Url="rmi://"+args[0]+"/AddServer";
AddServerIntf addServerIntf=(AddServerIntf)Naming.lookup(Url);
System.out.println("The first number is "+args[1]);
double d1=Double.valueOf(args[1]).doubleValue();
System.out.println("The second number is: "+args[2]);
double d2=Double.valueOf(args[2]).doubleValue();
System.out.println("The Sum is: "+addServerIntf.add(d1,d2));
} catch(Exception exc) {
System.out.println(exc);
}
}
}
Это 4 файла .java.
Затем я скомпилирую все эти файлы. Затем я создаю stub
с помощью rmic AddServerImpl
. После этого я запустил реестр rmi на стороне сервера, используя start rmiregistry
. Затем я запускаю сервер, используя java AddServer
и, наконец, клиент, используя java AddClient 27.60.200.80 5 9
.
Но ничего не происходит
Исключение, которое выбрасывается на стороне клиента, java.net.ConnectException : connection timed out : connect
В чем причина и как я могу это решить?
На клиентском компьютере это следующие .class файлы AddClient.class AddServerImpl.class AddServerImpl_Stub.class
и на стороне сервера AddServer.class AddServerImpl.class AddServerImpl_Stub.class AddServerIntf.class
Ответы
Ответ 1
В сообщении об ошибке говорится все: время ожидания подключения. Это означает, что ваш запрос не получил ответа в течение некоторого (по умолчанию) таймфрейма. Причины, по которым не было получено никакого ответа, вероятно, будут следующими:
- a) IP/домен или порт неверны
- b) IP/домен или порт (например, служба) недоступны
- c) IP/домен занимает больше времени, чем ваш тайм-аут по умолчанию, чтобы ответить
- d) У вас есть брандмауэр, который блокирует запросы или ответы на любой порт, который вы используете
- e) У вас есть брандмауэр, который блокирует запросы к этому конкретному хосту.
- f) Ваш доступ в Интернет недоступен.
Обратите внимание, что брандмауэры и блокировка портов или IP-адресов могут быть установлены вашим провайдером
Ответ 2
Номер (1): IP был неправильным - это правильный ответ. Файл /etc/hosts (a.k.a.
C:\Windows\system32\drivers\etc\hosts) была некорректная запись для имени локальной машины.
Исправлен файл "hosts", и Camel работает очень хорошо. Спасибо за указатель.
Ответ 3
Если вы указываете конфигурацию в домене (например, fabrikam.com), выполните NSLOOKUP, чтобы убедиться, что все ответные IP-адреса являются действительными и могут быть подключены к порту 389:
NSLOOKUP fabrikam.com
Test-NetConnection <IP returned from NSLOOKUP> -port 389