13

コードで 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 ファイルです。

次に、これらすべてのファイルをコンパイルします。次に、stubusingを作成し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

4 に答える 4

39

エラー メッセージがすべてを示しています。接続がタイムアウトしました。これは、リクエストが一定の (デフォルトの) 時間枠内に応答を得られなかったことを意味します。応答が受信されなかった理由は、次のいずれかである可能性があります。

  • a) IP/ドメインまたはポートが正しくない
  • b) IP/ドメインまたはポート (つまりサービス) がダウンしている
  • c) IP/ドメインがデフォルトのタイムアウトよりも応答に時間がかかっている
  • d)使用しているポートに関係なく、リクエストまたはレスポンスをブロックしているファイアウォールがあります
  • e)その特定のホストへのリクエストをブロックしているファイアウォールがあります
  • f) インターネット アクセスがダウンしている

ISP によって、ファイアウォールとポートまたは IP のブロックが設定されている場合があることに注意してください。

于 2011-04-14T12:14:23.383 に答える
1

番号 (1): IP が正しくありませんでした - が正解です。/etc/hosts ファイル (別名 C:\Windows\system32\drivers\etc\hosts ) に、ローカル マシン名のエントリが正しくありませんでした。「hosts」ファイルを修正し、Camel は非常にうまく動作します。ポインタをありがとう。

于 2012-02-03T20:02:39.223 に答える