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