Java套接字数组

Java套接字数组,java,sockets,networking,Java,Sockets,Networking,我正在创建服务器和客户端java应用程序。我想创建一个数组来存储我的套接字。我正在使用eclipse,当我在这行中键入时: Socket[] sockets = new Socket[3]; Eclipse给我一个错误,说“资源类型Socket[]没有实现java.lang.AutoCloseable” 我怎样才能解决这个问题 多谢各位 Try/Catch语句: try ( Socket[] sockets = new Socket[3]; //Line giv

我正在创建服务器和客户端java应用程序。我想创建一个数组来存储我的套接字。我正在使用eclipse,当我在这行中键入时:

Socket[] sockets = new Socket[3];
Eclipse给我一个错误,说“资源类型Socket[]没有实现java.lang.AutoCloseable”

我怎样才能解决这个问题

多谢各位

Try/Catch语句:

try (
                Socket[] sockets = new Socket[3]; //Line giving me error
                ServerSocket serverSocket =
                    new ServerSocket(Integer.parseInt(ip));
                Socket clientSocket = serverSocket.accept();     
                ServerClient client = new ServerClient(clientSocket);

                PrintWriter out =
                    new PrintWriter(clientSocket.getOutputStream(), true);                   
                BufferedReader in = new BufferedReader(
                    new InputStreamReader(clientSocket.getInputStream()));
                //User input
                BufferedReader stdIn =
                    new BufferedReader(
                        new InputStreamReader(System.in))
            ) {
                String inputLine;
                while ((inputLine = in.readLine()) != null) {
                    out.println(inputLine);
                }
            } catch (IOException e) {
                System.out.println("Exception caught when trying to listen on port "
                    + port + " or listening for a connection");
                System.out.println(e.getMessage());
                continue;
            } catch (Exception e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }

当我运行你的代码时,我收到了这个错误消息

Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - incompatible types: try-with-resources not applicable to variable type
    (java.net.Socket[] cannot be converted to java.lang.AutoCloseable)
我建议您在定义套接字数组时不要使用try-catch块和资源

       try (
            your rest of code
        ) { 
    define your array here --->  Socket[] sockets = new Socket[3];
            String inputLine;
            while ((inputLine = in.readLine()) != null) {
                out.println(inputLine);
            }
        } catch (IOException e) {
           your rest of code 

注意:套接字类实现了可关闭和自动关闭,但不能像您尝试的那样在try块中定义数组

在try with resources块中定义的资源必须都是自动关闭的。这就是它的目的。套接字[]不可自动关闭,因此无法在其中定义它。在重试之前移动声明。对于您得到错误的任何其他资源,同上。不要将其视为一般声明块。它不是。

当类本身实现接口时,套接字的数组不


简单地说:您无法打开或关闭数组。

您可以轻松地解决这个问题,只需创建一个包含套接字连接的类,然后构建该类对象的数组

构建类:


课例
{
插座连接器

这里的构造函数和额外代码

}

然后只需构建阵列:


示例[]arr=新示例[3]

您是否在资源中使用了try-catch-block?我是java新手,所以我不太清楚这意味着什么。我编辑了这篇文章,以显示它所在的try/catch语句。socket api是可关闭的,正如我现在发现的那样,您可以将try中括号中的内容取出,放在{这之后看看会发生什么?我根本看不到您使用此数组。@PM77-1错误与socket无关,而是与socket[]有关。你能告诉我什么是“资源尝试”吗?我真的不明白。我想如果我了解它是什么,我会更容易修复它。这是自java 7以来尝试捕获块的新方法。如果你有一些可关闭的东西,你可以将它们放在中间()它会自动关闭。就像扫描仪一样,ResultSet,所以不需要手动关闭它们。请查看@user2621270@See。