我有一个套接字(服务器和客户端)。 在服务器端,我有一个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){}
}
答案 0 :(得分:1)
您需要使用ObjectOutputStream.writeUnshared()
,或致电ObjectOutputStream.reset()
。否则,不会重新传输已传输的对象。
答案 1 :(得分:-1)
您可以使用ObjectOutputStream通过套接字接口发送Arraylist,并使用ObjectInputStream在客户端读取arraylist,只要您放入列表并发送的对象实现Serializable接口即可。 String实现了Serializable,所以你很好。