为什么我在长时间运行的应用程序中收到SocketException?

时间:2011-05-16 11:51:08

标签: java sockets

我已经编写了一个Java套接字服务器应用程序,如果我长时间运行它会给出错误4-8小时,下面是我得到的错误列表:

java.net.SocketException: Connection reset
        at java.net.SocketInputStream.read(SocketInputStream.java:130)
        at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:282)
        at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:324)
        at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:176)
        at java.io.InputStreamReader.read(InputStreamReader.java:184)
        at java.io.BufferedReader.fill(BufferedReader.java:153)
        at java.io.BufferedReader.readLine(BufferedReader.java:316)
        at java.io.BufferedReader.readLine(BufferedReader.java:379)
        at LiveRate.processData(LiveRate.java:224)
        at LiveRate.mainLiveRate(LiveRate.java:265)
        at LiveRate.liveRate(LiveRate.java:126)
        at LiveRate.run(LiveRate.java:119)
        at java.lang.Thread.run(Thread.java:636)

我的套接字应用程序从另一个TCP / IP服务器读取一些值并临时存储该值并向其他客户端提供相同的内容。不确定如果这些错误是由于系统上的重载或由于内存问题引起的。请帮助< / p>

2 个答案:

答案 0 :(得分:3)

可能(直接)加载或与内存无关。相反,它更可能是以下之一:

  • 远程服务已关闭/倒闭并定期重新启动,

  • 远程服务已决定关闭其连接结束,因为它处于“空闲”状态,

  • 网络连接是间歇性的,您偶尔会遇到停电或拥堵导致的“掉电”太长时间,

  • 您正在使用NAT或类似设备,并且NAT网关已回收用于连接的端口号,或

  • 正在执行一些关于TCP / IP连接打开时间太长的政策。


最重要的是,如果您希望ti长时间运行,您的客户端软件需要能够应对丢失的连接。这就是互联网的运作方式。

答案 1 :(得分:0)

我会说这是因为您的连接每24小时都会被您的Internet提供商重置。