Archived

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

ICE1.3 Tcp Communication Problem

Hi,all

I just deployed an ICE1.3 application on Solaris 8 (6800). and Start 3
Tcp socket ports(20000 30000 40000).They are ok at first, but failed to
communicate with part of clients about 3--4hours later. I can not telnet
these ports from some client system(windows 2000). But I checked the
status of these ports and find they are alive. I can telnet them on the
solaris system. Only part of client can not communicate with these port.
And the others work well. I can not find out why it failed to communicate
with these clients. Can any one give me some suggestion?

PS. Windows clients are COM programs. And Server is JAVA program.


Martin Sun

Comments

  • Hmmm... You can try running Ice with Ice.Trace.Network=3. That might give you an idea of what state the sockets are in as far as Ice is concerned. And netstat might yield some clues too. Other than that, it's very difficult to say what might be going wrong. If you can find a self-contained example that demonstrates the problem, that would be useful.

    Cheers,

    Michi.
  • Thanks, but which properties file should I add "Ice.Trace.Network" in, Client or Server ?
  • Try both, so you can see everything that is going on, or add --Ice.Trace.Network=3 to the command line of both.

    Michi.
  • Hi, Michi

    Please refer the following message from client. You can see that the client can not establish tcp connection with the server sied. What should I do?:

    C:\IDSClient\JVM1.4Client\sample1>run
    [ Network: trying to establish tcp connection to 202.120.xxx.xxx:20000 ]
    [ Network: trying to establish tcp connection to 202.120.xxx.xxx:20000 ]
    ddddd
    Ice.ConnectFailedException
    error = 0
    at IceInternal.Network.doConnect(Network.java:205)
    at IceInternal.TcpConnector.connect(TcpConnector.java:30)
    at IceInternal.OutgoingConnectionFactory.create(OutgoingConnectionFactor
    y.java:262)
    at Ice._ObjectDelM.setup(_ObjectDelM.java:316)
    at Ice.ObjectPrxHelper.__getDelegate(ObjectPrxHelper.java:717)
    at Ice.ObjectPrxHelper.ice_isA(ObjectPrxHelper.java:46)
    at Ice.ObjectPrxHelper.ice_isA(ObjectPrxHelper.java:34)
    at com.wiscom.is.idstar.IdentityManagerPrxHelper.checkedCast(IdentityMan
    agerPrxHelper.java:1263)
    at com.wiscom.is.impl.ice.IceIdentityManager.init(IceIdentityManager.jav
    a:593)
    at com.wiscom.is.impl.ice.IceIdentityManager.<init>(IceIdentityManager.j
    ava:53)
    at com.wiscom.is.IdentityFactory.<init>(IdentityFactory.java:71)
    at com.wiscom.is.IdentityFactory.createFactory(IdentityFactory.java:38)
    at GetUserAttribute.main(GetUserAttribute.java:16)
    Caused by: java.net.ConnectException: Connection timed out: no further informati
    on
    at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
    at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:521
    )
    at IceInternal.Network.doConnect(Network.java:177)
    ... 12 more
  • Can you telnet to the host/port? Try:

    telnet 202.120.xxx.xxx 20000

    You should see something like:

    Ice<other characters>...

    Also, can you try this with Ice 2.0.0 please? This way we don't have to install old versions here in order examine the line numbers in the stack trace.
  • I telnet the 20000 port and can not telnet it. And I telnet 389 port. it works.
    So I try it again for 20000 port this time it works too. I don't know the reason. Can you give me some suggestion?
  • I'm afraid I have no idea. In particular, I don't know why telnet sometimes works, and sometimes it does not. This looks to me like a problem that is unrelated to Ice.
  • Thinking about this again, is it possible that there are so many clients connecting to the server at the same time, that the TCP connection backlog can't keep up? What traces do you get if you run the server with --Ice.Trace.Network=3?
  • I will give you the server side trace message later. But the number of clients is noly 10--20. I will add Ice.Trace.Network at server side.
  • HICI get the server side message. Can I say that the tcp link has some problem? what kind of problem? network communication or program?

    using config ../config/server.properties
    [ Network: attempting to bind to tcp socket 202.120.xxx.xxx:20000 ]
    [ Network: accepting tcp connections at 202.120.xxx.xxx:20000 ]
    [ Network: accepted tcp connection
    local address = 0.0.0.0:20000
    remote address = 10.4.229.13:55159 ]
    [ Network: sent 14 of 14 bytes via tcp
    local address = 202.120.xxx.xxx:20000
    remote address = 10.4.229.13:55159 ]
    [ Network: received 5 of 14 bytes via tcp
    local address = 202.120.xxx.xxx:20000
    remote address = 10.4.229.13:55159 ]
    [ Network: received 5 of 9 bytes via tcp
    local address = 202.120.xxx.xxx:20000
    remote address = 10.4.229.13:55159 ]
    [ Network: received 4 of 4 bytes via tcp
    local address = 202.120.xxx.xxx:20000
    remote address = 10.4.229.13:55159 ]
    warning: connection exception:
    Ice.BadMagicException
    badMagic[0] = -1
    badMagic[1] = -12
    badMagic[2] = -1
    badMagic[3] = -3

    [ Network: attempting to bind to tcp socket 202.120.xxx.xxx:20000 ]
    [ Network: accepting tcp connections at 202.120.xxx.xxx:20000 ]
    [ Network: accepted tcp connection
    local address = 0.0.0.0:20000
    remote address = 10.4.229.13:55159 ]
    [ Network: sent 14 of 14 bytes via tcp
    local address = 202.120.xxx.xxx:20000
    remote address = 10.4.229.13:55159 ]
    [ Network: received 5 of 14 bytes via tcp
    local address = 202.120.xxx.xxx:20000
    remote address = 10.4.229.13:55159 ]
    [ Network: received 5 of 9 bytes via tcp
    local address = 202.120.xxx.xxx:20000
    remote address = 10.4.229.13:55159 ]
    [ Network: received 4 of 4 bytes via tcp
    local address = 202.120.xxx.xxx:20000
    remote address = 10.4.229.13:55159 ]
    warning: connection exception:
    Ice.BadMagicException
    badMagic[0] = -1
    badMagic[1] = -12
    badMagic[2] = -1
    badMagic[3] = -3
    at IceInternal.ThreadPool.read(ThreadPool.java:800)
    at IceInternal.ThreadPool.run(ThreadPool.java:654)
    at IceInternal.ThreadPool.access$100(ThreadPool.java:17)
    at IceInternal.ThreadPool$EventHandlerThread.run(ThreadPool.java:1063)
    local address = 202.120.xxx.xxx:20000
    remote address = 10.4.229.13:55159
    [ Network: closing tcp connection
    local address = 202.120.xxx.xxx:20000
    remote address = 10.4.229.13:55159 ]
  • From the trace it appears as if some non-Ice client is trying to send data to the server on port 20000.
  • Hi,

    I traced the Network communication via snoop and foud out that the system got 3 client tcp requests on port 20000 but ICE server didn't answser any request. so the client failed to creat connection with server.
    I think something wrong with ICE process. My system is Sparc Solaris8. Can you tell me if ICE1.3 support this platform?


    Regards,

    Chao Sun
  • You can find a list of support platforms here:

    http://www.zeroc.com/platforms.html

    However, even though we only tested with Solaris 9, I would be very surprised if there were any problems with Solaris 8.