示例:
<file>
答案 0 :(得分:0)
您需要使用Generics。
ArrayList<Socket> arraySocket = new ArrayList<>(); // works in Java 7 and above
ArrayList<Socket> arraySocket = new ArrayList<Socket>(); // for versions 6 and below
我假设List中的Object类型是Socket
。然后你需要在for循环中使用正确的类型:
for (Socket arraySocket1 : arraySocket) {
答案 1 :(得分:0)
ArrayList是原始类型,您需要对其进行参数化。
我想您要执行以下操作:
ArrayList<Socket> arraySocket = new ArrayList<Socket>();
此处arraySocket
是Socket
s的ArrayList(即,arraylist仅包含Socket
类型的元素。)
要通过输出流发送内容,您可以在for循环中执行以下操作:
for (int i = 0; i < arraySocket.size(); i++) {
DataOutputStream dataToClient = new DataOutputStream(arraySocket.get(i).getOutputStream()); // Get the i'th outputstream
dataToClient.writeBytes(...); // Write your data
}
答案 2 :(得分:0)
ArrayList<Socket> arraySocket=new ArrayList<>();
//... arraySocket.add(socket);...
for (int i = 0; i < arraySocket.size(); i++){
DataOutputStream dataToClient = new DataOutputStream(arraySocket.get(i).getOutputStream()); // Get the i'th outputstream
dataToClient.writeBytes(...); // Write your data
}
答案 3 :(得分:0)
首先,我建议您使用Generics,如下所示:
ArrayList<Socket> arraySocket = new ArrayList<Socket>();
现在,您可以使用以下代码遍历数组中的套接字:
for(Socket socket: arraySocket){
DataOutputStream dataOutput newDataOutputStream(socket.getOutputStream());
//write data with the dataOuput.
}
但是当你想多次写入数据时会出现问题,如果你从1个套接字创建2个输出流并且它们同时写入它会产生异常,所以最好创建第二个数组列表所有套接字输出流(或映射)并写入那些。
示例:
//the array list with sockets
ArrayList<Socket> arraySocket = new ArrayList<Socket>();
ArrayList<OutputStream> outputStreams = new ArrayList<OutputStream>();
//save the output streams
for(Socket socket: arraySocket){
outputStreams.add(socket.getOutputStream);
}
//to write to the sockets use this
for(OutputStream output: outputStreams){
//write data to the output.
}