Java CORBA 客户端立即断开连接

Posted

技术标签:

【中文标题】Java CORBA 客户端立即断开连接【英文标题】:Java CORBA Client Disconnects Immediately 【发布时间】:2010-06-18 05:29:12 【问题描述】:

我已经构建了一个订阅事件服务器的 Java CORBA 应用程序。应用程序可以很好地连接到上下文并缩小上下文,但是一旦将事件发送到客户端,它就会因以下错误而中断。请指教。

2010/04/25!13.00.00!E00555!enserver!EventServiceIF_i.cpp!655!PID(7390)!enserver - e._info=system exception, ID 'IDL:omg.org/CORBA/TRANSIENT:1.0'
TAO exception, minor code = 54410093 (invocation connect failed; ECONNRESET), completed = NO

编辑: 请注意,这只发生在某些机器上运行时。它适用于某些人,但不适用于其他人。即使在同一个平台上(我已经尝试过 Windows XP/7 和 CentOS linux)有些工作,有些不...

这是 WireShark 的输出...看起来与非工作 PC 相比,工作 PC 与网络的交互性更强。工作 PC

No.     Time        Source                Destination           Protocol Info
     62 28.837255   10.10.10.209          10.10.10.250          TCP      50169 > 23120 [SYN] Seq=0 Win=8192 Len=0 MSS=1260 WS=8
     63 28.907068   fe80::5de0:8d21:937e:c649 ff02::1:3             LLMNR    Standard query A isatap
     64 28.907166   10.10.10.209          224.0.0.252           LLMNR    Standard query A isatap
     65 29.107259   10.10.10.209          10.255.255.255        NBNS     Name query NB ISATAP<00>
     66 29.227000   10.10.10.250          10.10.10.209          TCP      23120 > 50169 [SYN, ACK] Seq=0 Ack=1 Win=32768 Len=0 MSS=1260 WS=0
     67 29.227032   10.10.10.209          10.10.10.250          TCP      50169 > 23120 [ACK] Seq=1 Ack=1 Win=66560 Len=0
     68 29.238063   10.10.10.209          10.10.10.250          GIOP     GIOP 1.1 Request s=326 id=5 (two-way): op=logon
     69 29.291765   10.10.10.250          10.10.10.209          GIOP     GIOP 1.1 Reply s=420 id=5: No Exception
     70 29.301395   10.10.10.209          10.10.10.250          GIOP     GIOP 1.1 Request s=369 id=6 (two-way): op=registerEventStat
     71 29.348275   10.10.10.250          10.10.10.209          GIOP     GIOP 1.1 Reply s=60 id=6: No Exception
     72 29.405250   10.10.10.209          10.10.10.250          TCP      50170 > telnet [SYN] Seq=0 Win=8192 Len=0 MSS=1260 WS=8
     73 29.446055   10.10.10.250          10.10.10.209          TCP      telnet > 50170 [SYN, ACK] Seq=0 Ack=1 Win=32768 Len=0 MSS=1260 WS=0
     74 29.446128   10.10.10.209          10.10.10.250          TCP      50170 > telnet [ACK] Seq=1 Ack=1 Win=66560 Len=0
     75 29.452021   10.10.10.209          10.10.10.250          TELNET   Telnet Data ...
     76 29.483537   10.10.10.250          10.10.10.209          TELNET   Telnet Data ...
     77 29.483651   10.10.10.209          10.10.10.250          TELNET   Telnet Data ...
     78 29.523463   10.10.10.250          10.10.10.209          TCP      telnet > 50170 [ACK] Seq=4 Ack=5 Win=32768 Len=0
     79 29.554954   10.10.10.209          10.10.10.250          TCP      50169 > 23120 [ACK] Seq=720 Ack=505 Win=66048 Len=0

电脑不工作

No.     Time        Source                Destination           Protocol Info
      1 0.000000    10.10.10.209          10.10.10.250          TCP      64161 > 23120 [SYN] Seq=0 Win=8192 Len=0 MSS=1260 WS=8
      2 2.999847    10.10.10.209          10.10.10.250          TCP      64161 > 23120 [SYN] Seq=0 Win=8192 Len=0 MSS=1260 WS=8
      3 4.540773    Cisco_3c:78:00        Cisco-Li_55:87:72     ARP      Who has 10.0.0.1?  Tell 10.10.10.209
      4 4.540843    Cisco-Li_55:87:72     Cisco_3c:78:00        ARP      10.0.0.1 is at 00:1a:70:55:87:72
      5 8.992284    10.10.10.209          10.10.10.250          TCP      64161 > 23120 [SYN] Seq=0 Win=8192 Len=0 MSS=1260

【问题讨论】:

您是否检查过是否存在网络问题,例如在不同机器上配置不同的防火墙?可以手动建立网络连接吗?你写的“应用程序缩小并且可以正常登录”是什么意思? 是否可以制作并发布一个展示您所描述问题的最小示例? 防火墙等对于机器都是一样的。我定期连接两台机器,无论是 RDP 还是 SSH。还是一脸懵逼…… 【参考方案1】:

man page for recv 声明当对方关闭连接(无论出于何种原因)时,您会收到 ECONNRESET

ECONNRESET
  A connection was forcibly closed by a peer.

看起来连接被另一方切断(出于某种原因)。 会不会是不工作的机器阻塞了连接(比如恶意软件防护)?

【讨论】:

以上是关于Java CORBA 客户端立即断开连接的主要内容,如果未能解决你的问题,请参考以下文章

客户端立即连接和断开连接而没有错误消息?

PHPWebsocket 客户端立即断开连接

客户端立即连接和断开连接没有错误消息?

立即检测客户端与服务器套接字的断开连接

Websocket PHP:从客户端发送到服务器的立即断开连接和奇怪的消息字符串

socket 用disconnect 断开,再重新连接怎么搞