我正在尝试使用套接字创建服务器,并且试图找到一种通过使用某种数组/列表/集合向服务器添加多个套接字的方法。
目前我正在尝试使用CopyOnWriteArrayList
,但是由于我对List和PrintWriters的工作方式了解不多,我不认为我想使用List。
这在我的主要课堂上是引起我问题的原因:
protected CopyOnWriteArrayList<ClientConnection> clients;
这迫使我必须按以下步骤关闭课程:
@Override
public void close() throws IOException {
for (int n = 0; n < clients.size(); ++n) {
// Gets the client
ClientConnection toClose = clients.get(n);
// Closes it
toClose.close();
// Sets the array to be closed.
clients.set(n, toClose);
}
}
这是ClientConnection.java的内容:
public class ClientConnection implements java.io.Closeable {
public Socket socket;
public PrintWriter out;
public InputStreamReader in;
public ClientConnection (Socket socket) throws IOException {
this.socket = socket;
out = new PrintWriter(socket.getOutputStream(), true);
in = new InputStreamReader(socket.getInputStream());
}
@Override
public void close () throws IOException {
out.close();
in.close();
socket.close();
}
}
我想知道的是,是否由于使用列表进行克隆而导致的错误做法,是将列表与PrintWriters和其他java.io
类一起使用吗?如果是这样,什么是好的选择?
答案 0 :(得分:1)
您的代码完全可以,您可以将列表与PrintWriters和java.io一起使用