Archived

This forum has been archived. Please start a new discussion on GitHub.

problem connection

Hello,

I got a problem.
I wrote a little java application server , and a little c++ application client.
When I launch the two application on the same machine, its' Heaven :p .
I precise the ip in the endpoints, in the ice config file, and the port. Everything sounds good.

When a launch client and server on different machines, my client doesn't reach the server. Not possible to create a proxy.

if in a shell, I launch telnet myIp myPort, the connection is OK. No network problem.

here the client code (c++) creating the proxy. Nothing complex
Ice::ObjectPrx base=ic->stringToProxy("MyServer:default -h xxx.xxx.xxx.xxx -p XXXXX");
proxyToServer=IConnexionManagerPrx::checkedCast(base);
if(!proxyToServer){
throw("invalid proxy" + proxy);
}else{
isConnected=true;
MyLogger::getAppliLog()->LogMessage("Server is ready and has been contacted");
}

here the server code (java)
Ice.ObjectAdapter adapter=ic.createObjectAdapterWithEndpoints("Server", "default -p XXXXX");
ConnexionManager objet=new ConnexionManager();// class extends Interface created by slice
adapter.add(objet,ic.stringToIdentity("MyServer"));

does this behaviour tell you something?

thx for help!

Comments

  • Try running client and server with --Ice.Trace.Network=3. That will allow you to verify what IP address and port the client tries to connect to, and what address and port the server listens at. That should help to narrow down the problem.

    Cheers,

    Michi.
  • marc
    marc Florida
    See also this FAQ.
  • Hum, I try to modify my config file:
    Mytest.Client.CallbackServer=MyServer:tcp -p XXXX
    Mytest.Server.Endpoints=tcp -h XXX.XX.XX.XXX -p XXX
    Ice.Trace.Network=3
    Ice.Trace.Protocol=1
    Ice.Warn.Connections=1
    Ice.ACM.Client=0
    Ice.ThreadPool.Client.SizeMax=5
    Ice.ThreadPool.Client.Size=4
    

    I can use the properties in my program easily, and find the endpoints for connection, but no trace for the client appears.

    I'll try to find what happens, if you got an idea while this time...

    thank you
  • benoit
    benoit Rennes, France
    Hi,

    How do you specify this configuration file when lauching your client or server? You should use the command line option --Ice.Config=<config file path>. You can also pass properties as command line option, --Ice.Trace.Network=2 for example.

    Cheers,
    Benoit.
  • Yes I do.
    I have others tasks today, I will test furthermore in few hours.

    It is weird, because I can manipulate the properties file in my C++ code, and reach the properties concerning the endpoints, and in my applicative trace, I trace the good things, but the parameters concerning the trace... nothing.

    The trace will be write on the console, of the shell launching the application? doesn't it?
  • benoit
    benoit Rennes, France
    shimrod wrote: »
    Yes I do.
    The trace will be write on the console, of the shell launching the application? doesn't it?

    Yes, this is correct.

    Benoit.
  • No trace...
    So, I will set the properties programmatically. Better chance to work, I guess...
  • benoit
    benoit Rennes, France
    It should work when you set the property in the configuration file. So either the property is not being parsed by the communicator or there's nothing to trace.

    Are you sure other properties in the configuration file are parsed by the communicator? How do you create the communicator and specify the configuration file?

    Cheers,
    Benoit.
  • simply (red),
    ic=Ice::initialize(argc,argv);
    PropertiesPtr properties = ic->getProperties();
    string proxyProperty2   = "MyTest.Server.Endpoints";
    adressToServer = properties->getProperty(proxyProperty2.c_str());
    

    I try this
    		PropertiesPtr properties = Ice::createProperties();
    		properties->setProperty("Ice.Trace.Network", "3");
    		ic= Ice::initializeWithProperties(argc,argv, properties);
    

    but no trace again...

    but I communicate between my differents machine ( windows, debian ), it was effectively and simply a problem from choosing the good ip to adress...

    Thanks for your good advice...
  • Oki...
    in fact, when I launch my program, two files are created, stand up, stderr.txt, and stdout.txt. And I saw the trace in it...
    But strangely, they are deleted when my program is stopped. Why the trace doesn't appear in my shell, and appear in this file... I dont know where configure it.

    Sorry for your lost time...

    Thank you