0

ICE で Android アプリケーションを作成しました。しかし、アプリケーションを実行すると、「LogCat」は「Ice.ConnectionRefusedException error=0」というメッセージを出力し、長い間検索しましたが、答えがありません。私を助けてください!どうもありがとうございます。これは 2 つのコード セクションです。(下手な英語でごめんなさい)

サーバー (C++)

int status = 0;
Ice::CommunicatorPtr ic;
try
{
    ic = Ice::initialize(argc, argv);
    Ice::ObjectAdapterPtr adapter =
        ic->createObjectAdapterWithEndpoints("HelloAdapter", "tcp -p 10000"); 
    Ice::ObjectPtr object = new HelloI();
    adapter->add(object, ic->stringToIdentity("hello"));
    adapter->activate();
    ic->waitForShutdown();
}

クライアント(Java)

    public void sethelloPrx(){
    Ice.Communicator ic=null;
    try{
        ic=Ice.Util.initialize();
        Ice.ObjectPrx base=
                ic.stringToProxy("hello:tcp -h 127.0.0.1 -p 10000");
        index = helloPrxHelper.checkedCast(base);
        if(index == null)
            throw new Error("Invalid proxy");
    }catch(Exception e){
        Toast.makeText(MainActivity.this,
                "IceMain 注册失败",
                Toast.LENGTH_SHORT).show();
        Log.e("bmi",e.toString());          
    }       
}
4

1 に答える 1

0

クライアントでは、サーバーのローカルホストにアクセスできるかのように、プロキシにサーバーの IP が書き込まれています。プロキシで localhost の IP を変更し、サーバーの IP を入力する必要があります。この行を変更するだけです:

 Ice.ObjectPrx base = ic.stringToProxy("hello:tcp -h 127.0.0.1 -p 10000");

に:

Ice.ObjectPrx base = ic.stringToProxy("hello:tcp -h <server's IP> -p 10000");

次のようにサーバーの IP を出力できます。

ObjectPrx proxy = adapter->add(object, ic->stringToIdentity("hello"));
std::cout << proxy << std::endl;

このようにして、サーバーの IP を確認できます。

少し説明:

クライアントはローカルホストでサーバーを見つけようとしています。あなたの説明を正しく理解していれば、クライアントは携帯電話またはエミュレーターのいずれかです。サーバーが見つからないので、PC上にあると思います。

これがお役に立てば幸いです。編集: このリポジトリには ZeroC Ice の例がたくさんあります: https://bitbucket.org/arco_group/ice-hello

于 2015-05-28T08:19:35.967 に答える