Error: Ice.ConnectionRefusedException error=0. When I ran as Android application
Error: Ice.ConnectionRefusedException error=0. When I ran as Android application
我已经在 ICE 中编写了一个 Android 应用程序。但是当我运行申请的时候,"LogCat"打印信息"Ice.ConnectionRefusedException error=0",找了半天也没有答案。请帮我!非常感谢你。
这是两个代码部分。 (我很抱歉我的英语不好)
服务器 (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());
}
}
在您的客户端中,您已经在代理上写入了服务器的 IP,就像您可以访问服务器的本地主机一样。您必须更改代理上的本地主机 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了
小说明:
您的客户端正在尝试在本地主机上定位服务器。如果我正确理解了您的解释,那么客户端要么在移动 phone 上,要么在模拟器上。因为它找不到我认为是在 PC 上的服务器。
希望对您有所帮助。
编辑:这个 repo 充满了 ZeroC Ice 示例:https://bitbucket.org/arco_group/ice-hello
我已经在 ICE 中编写了一个 Android 应用程序。但是当我运行申请的时候,"LogCat"打印信息"Ice.ConnectionRefusedException error=0",找了半天也没有答案。请帮我!非常感谢你。 这是两个代码部分。 (我很抱歉我的英语不好)
服务器 (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());
}
}
在您的客户端中,您已经在代理上写入了服务器的 IP,就像您可以访问服务器的本地主机一样。您必须更改代理上的本地主机 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了
小说明:
您的客户端正在尝试在本地主机上定位服务器。如果我正确理解了您的解释,那么客户端要么在移动 phone 上,要么在模拟器上。因为它找不到我认为是在 PC 上的服务器。
希望对您有所帮助。 编辑:这个 repo 充满了 ZeroC Ice 示例:https://bitbucket.org/arco_group/ice-hello