Java.net.ConnectException: Connection Time-out: Connect?

Ik heb RMI in mijn code gebruikt:

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);
       }
   }
 }

Dit zijn 4 .java-bestanden geschreven.

Vervolgens compileer ik al deze bestanden. Daarna maak ik een stubmet behulp van rmic AddServerImpl. Daarna start ik het rmi-register aan de serverzijde met behulp van start rmiregistry. Dan start ik de server met behulp van java AddServeren tot slot de client met behulp van java AddClient 27.60.200.80 5 9.
Maar er gebeurt niets

Uitzondering die aan de clientzijde wordt gegenereerd, is java.net.ConnectException : connection timed out : connect

Wat is de reden en hoe kan ik dit oplossen?

Op de clientcomputer zijn dit de volgende .class-bestanden AddClient.class AddServerImpl.class AddServerImpl_Stub.classen aan de serverzijde AddServer.class AddServerImpl.class AddServerImpl_Stub.class AddServerIntf.class


Antwoord 1, autoriteit 100%

De foutmelding zegt het al: er is een time-out opgetreden voor je verbinding. Dit betekent dat uw verzoek niet binnen een (standaard) tijdsbestek is beantwoord. De redenen dat er geen reactie is ontvangen, zijn waarschijnlijk een van:

  • a) Het IP/domein of de poort is onjuist
  • b) Het IP/domein of de poort (d.w.z. service) is niet beschikbaar
  • c) Het IP/domein duurt langer dan uw standaard time-out om te reageren
  • d) Je hebt een firewall die verzoeken of reacties blokkeert op welke poort je ook gebruikt
  • e) Je hebt een firewall die verzoeken naar die bepaalde host blokkeert
  • f) Uw internettoegang is niet beschikbaar

Houd er rekening mee dat firewalls en poort- of IP-blokkering mogelijk zijn ingesteld door uw ISP


Antwoord 2, autoriteit 3%

Nummer (1): het IP-adres was onjuist – is het juiste antwoord. Het /etc/hosts-bestand (ook bekend als
C:\Windows\system32\drivers\etc\hosts ) had een onjuiste invoer voor de lokale computernaam.
Het ‘hosts’-bestand gecorrigeerd en Camel werkt erg goed. Bedankt voor de aanwijzing.


Antwoord 3

Uitzondering: java.net.ConnectException

Dit betekent dat uw verzoek niet binnen de gestelde tijd is beantwoord door de server. En er zijn enkele redenen voor deze uitzondering:

  • Te veel verzoeken overbelasten de server
  • Verzoek om pakketverlies vanwege verkeerde netwerkconfiguratie of lijnoverbelasting
  • Soms verbruikt de firewall een verzoekpakket voordat de server wordt
  • Ook afhankelijk van de configuratie van de threadverbindingspool en de huidige status van de verbindingspool
  • Reactiepakket verloren tijdens overgang

Antwoord 4

Als je de configuratie naar een domein verwijst (bijv. fabrikam.com), voer dan een NSLOOKUP uit om ervoor te zorgen dat alle antwoordende IP’s geldig zijn en kunnen worden aangesloten op poort 389:

NSLOOKUP fabrikam.com
Test-NetConnection <IP returned from NSLOOKUP> -port 389

Other episodes