如何在Java中将对象发送到socket数组

时间:2015-08-02 11:52:48

标签: java

示例:

<file>

4 个答案:

答案 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>();

此处arraySocketSocket 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.
}