java.net.ConnectException: истекло время ожидания соединения: подключиться? - PullRequest
11 голосов
/ 14 апреля 2011

Я использовал 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

Ответы [ 4 ]

33 голосов
/ 14 апреля 2011

В сообщении об ошибке сказано все: время вашего соединения истекло. Это означает, что ваш запрос не получил ответа в течение некоторого (по умолчанию) срока. Причинами того, что ответ не был получен, может быть одна из:

  • a) IP / домен или порт неверны
  • b) IP / домен или порт (т.е. услуга) не работает
  • в) IP / домен занимает больше времени, чем ваш тайм-аут по умолчанию, чтобы ответить
  • d) У вас есть брандмауэр, который блокирует запросы или ответы на любом порте, который вы используете
  • e) У вас есть брандмауэр, который блокирует запросы к этому конкретному хосту
  • е) Ваш доступ в интернет недоступен

Обратите внимание, что ваш интернет-провайдер может использовать брандмауэры и блокировку портов или IP-адресов

0 голосов
/ 02 апреля 2018

Исключение: java.net.ConnectException

Это означает, что ваш запрос не получил ответа от сервера в оговоренное время.И вот некоторые причины этого исключения:

  • Слишком много запросов, перегружающих сервер
  • Запрос потери пакетов из-за неправильной конфигурации сети или перегрузки линии
  • Иногда брандмауэр используетПакет запроса до получения сервером
  • Также зависит от конфигурации пула соединений потоков и текущего состояния пула соединений
  • Пакет ответа потерян во время перехода
0 голосов
/ 10 октября 2017

Если вы указываете конфигурацию на домен (например, fabrikam.com), выполните NSLOOKUP, чтобы убедиться, что все отвечающие IP-адреса действительны и могут быть подключены к порту 389:

NSLOOKUP fabrikam.com

Test-NetConnection <IP returned from NSLOOKUP> -port 389
0 голосов
/ 04 февраля 2012

Число (1): IP-адрес был неверным - это правильный ответ. Файл / etc / hosts (a.k.a. C: \ Windows \ system32 \ drivers \ etc \ hosts) неверная запись для имени локальной машины. Исправил файл 'hosts', и Camel работает очень хорошо. Спасибо за указатель.

...