通过套接字发送arraylist

时间:2015-07-16 23:26:45

标签: java sockets inputstream outputstream

我有一个套接字(服务器和客户端)。 在服务器端,我有一个arrayList。每次新用户连接时,我都会将其添加到arrayList。然后我将arraylist发送给每个人。 但是当客户端收到arrayList:

First Client 
[user1]

Second Client
[user1,user2]

Third Client
[user1,user2,user3]

但是,如果我将它发送到字符串,正确接收。

我使用了ObjectInputStream和ObjectOutputStream

//Server Side
public void tellEveryOne(){
    Iterator it = clientOutputStreams.iterator();
    while(it.hasNext()){
        try{
            ObjectOutputStream oos = (ObjectOutputStream) it.next();
            oos.writeObject(namesMachines);
        }catch(Exception ex){}
    }
}

//Client Side

public void run(){
        Object obj;
        try{
            while((obj=ois.readObject())!=null){
                castObject(obj);
            }
        }catch(Exception ex){}

}

2 个答案:

答案 0 :(得分:1)

您需要使用ObjectOutputStream.writeUnshared(),或致电ObjectOutputStream.reset()。否则,不会重新传输已传输的对象。

答案 1 :(得分:-1)

您可以使用ObjectOutputStream通过套接字接口发送Arraylist,并使用ObjectInputStream在客户端读取arraylist,只要您放入列表并发送的对象实现Serializable接口即可。 String实现了Serializable,所以你很好。