当前位置: 首页 > 知识库问答 >
问题:

socketException:在CentOS(Linux)上关闭套接字

童浩言
2023-03-14

我有一个java应用程序,它使用一个内部代理服务器来分析web应用程序的http trafic(在浏览器-Prism或Chrome/Chromium中),这实际上是同一个应用程序的一部分。基于trafic分析,它执行了一些操作。

应用程序在Windows(XP,7和8)中运行良好,我也在Ubuntu和SUSE中使用它没有任何问题。最近,一个新的潜在客户想在CentOs中测试它,但我发现java.net.socketException:Socket关闭了。以下代码产生此异常(实现Runnable):

   public void run() {
    try {
        // create a server socket, and loop forever listening for
        // client connections
        synchronized (this) {
            server = new ServerSocket(thisPort);
            notifyAll();
        }
        while (true) {
            if(server.isClosed()){ // I added this just to see if it helps...
                server = new ServerSocket(thisPort);
            }
            Socket client = server.accept();  // Exception thrown here

            ProxyThread t = new ProxyThread(client, fwdServer, fwdPort); // new Thread takes care of comunication, no issues there at all...
            t.setDebug(debugLevel, debugOut);
            t.setTimeout(ptTimeout);
            t.start();
        }
    } catch (Exception e) {
            debugOut.println("Proxy Thread error: " + e);
            e.printStackTrace();

    }

    closeSocket();
}
java.net.SocketException: Socket closed
    at java.net.PlainSocketImpl.socketAccept(Native Method)
    at java.net.AbstractPlainSocketImpl.accept(Unknown Source)
    at java.net.ServerSocket.implAccept(Unknown Source)
    at java.net.ServerSocket.accept(Unknown Source)
    at sk.tido.simpleproxy.Proxy.run(Proxy.java:20)
CentOS release 6.3 (Final)
Linux pcpanel 2.6.32-279.el6.x86_64 #1 SMP Fri Jun 22 12:19:21 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
java version "1.7.0_60"
Java(TM) SE Runtime Environment (build 1.7.0_60-b19)
Java HotSpot(TM) 64-Bit Server VM (build 24.60-b09, mixed mode)

java version "1.6.0_24"
OpenJDK Runtime Environment (IcedTea6 1.11.1) (rhel-1.45.1.11.1.el6-x86_64)
OpenJDK 64-Bit Server VM (build 20.0-b12, mixed mode

任何建议都是欢迎的,因为应用程序已经在其他Linux distros中运行了近2.5年没有问题...我只能在网上找到类似的问题,但与httpclient有关,这对我没有太大帮助。

共有1个答案

雍飞雨
2023-03-14

当这段代码在accept()中被阻止时,您将在应用程序的其他地方关闭ServerSocket。

 类似资料:
  • 因此,我有一个客户机wich连续发送和接收数据消息,wich工作正常,然而,当我关闭/停止客户机时,我会得到以下单行错误: 尽管我试图关闭插座--最终封闭了。现在我的问题是为什么我会收到这个错误,这个行为是否正常,以及如何正确处理这个错误。下面是我的代码:

  • 问题内容: 我敢肯定这是一个简单的问题,但是我不知道socket.io文档在哪里,而http://labs.learnboost.com/socket.io/上的文档并没有真正的帮助。 假设我有一个socket.io http服务器,并写了一个网站来连接它。 我如何为服务器提供保护,以使未经授权的人(未通过网站连接的人)被阻止/丢弃/禁止。 如何在服务器端结束套接字连接?所以如果我有 如何结束套接

  • 我最近一直在玩套接字,但是我遇到了一个问题…当我从服务器接收数据时,我得到一个“java.net.套接字异常:套接字关闭”异常。我没有在任何地方关闭套接字,事实上,我唯一使用关闭()的地方是扫描仪上从System.in读取文本; 以下是我的代码: 客户: 服务器: 数据包发送者: 客户端接收器: 数据包接收器:

  • 我正在为客户机发送对象到服务器,在服务器端修改该对象,并将其重新发送到客户机。将对象从客户机发送到服务器很好,它工作正常,但当我将对象发送回来时,它给出了异常,Socket关闭。这里是代码。IntString和ParentObj是我要发送对象的类。 服务器类 用于发送和接收对象的Send_recv类。

  • 问题内容: 我有一个使用简单套接字在两个系统之间传递某些字符的应用程序。我的Java应用程序作为服务器运行。我建立了良好的连接,甚至传递了一条消息。但是,发送完一条消息后,我的连接关闭。 从我可以看出来的好像是在关闭时,套接字本身正在关闭吗?!这很不好,因为我有多个要在同一连接上发送的消息。 我吃饱了吗?如何在Java中维护此连接? 问题答案: 是的,关闭任何作家/读者将关闭他们包装的所有其他作家

  • 我想创建能够与多个客户端连接的服务器,但我总是收到“套接字关闭”异常或从输入流中读取空值,以前我认为这是由于以错误的方式关闭套接字连接引起的,所以我发布了这个主题,但现在似乎这不是问题所在。 服务器方法 HandlerThread类 客户端模拟器 例外和问题 在客户端模拟器之前启动服务器,客户端模拟器没有任何异常,但是在服务器端,并没有收到所有数据,从控制台打印信息时,我看到“null”、“Hel