2014-04-11 112 views
0

这可能是一个我不知道的愚蠢问题,但似乎我很困难。将ArrayList从服务器传递到客户端Java(故障)

所以我在那里我有一个数组列表run()

增加了一些元素,比如这个

ArrayList<Accounts> acc= new ArrayList<>(); 

服务器我有这样的事情

oos.writeObject(acc); 
oos.flush(); 

如果我System.out.println(acc);它显示一切都很好。

上我只是用这样的客户端:

ArrayList<Accounts> obj; 

obj = (ArrayList <Accounts>)ois.readObject(); 

,但它不读到底什么。

这是错误的服务器:

java.net.SocketException: Software caused connection abort: socket write error 
    at java.net.SocketOutputStream.socketWrite0(Native Method) 
    at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:109) 
    at java.net.SocketOutputStream.write(SocketOutputStream.java:153) 
    at java.io.ObjectOutputStream$BlockDataOutputStream.drain(ObjectOutputStream.java:1857) 
    at java.io.ObjectOutputStream$BlockDataOutputStream.setBlockDataMode(ObjectOutputStream.java:1766) 
    at java.io.ObjectOutputStream.writeNonProxyDesc(ObjectOutputStream.java:1273) 
    at java.io.ObjectOutputStream.writeClassDesc(ObjectOutputStream.java:1227) 
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1411) 
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174) 
    at java.io.ObjectOutputStream.writeFatalException(ObjectOutputStream.java:1557) 
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:349) 
    at MyThread.run(ServerTwoThread.java:52) 

我认为,服务器不能发送列表出于某种原因,是的我的账户类是可序列!

会喜欢一些输入!

编辑:我发现了它,它不是OOS,但ooos ...

+0

我已经初始化ObjectOutputStream与'DataOutputStream'对象在我的应用程序 – maxx777

回答

0

检查出我在我的应用程序中使用

public void run() { 
     try { 
      din = new DataInputStream(socket.getInputStream()); 
      names.add(din.readUTF()); // store the user name in arraylist 
      Iterator iter = list.iterator(); 
     Socket socket; 

     while (iter.hasNext()) { 
      socket = (Socket) iter.next(); // creating ArrayList to be written on the stream 
      dout = new DataOutputStream(socket.getOutputStream()); 
      ObjectOutputStream obj = new ObjectOutputStream(dout); 
      obj.writeObject(names); //write the list of users in stream of all clients 
      dout.flush(); 
      obj.flush(); 
     } 
     } catch (Exception oe) { 
      System.out.println(oe); 

     } 
    } 

我知道它不是确切的答案代码有问题,但它会有所帮助

+0

恩,它没有帮助。但是,谢谢:) –

+0

你能提供更多的代码,以便我们可以进一步帮助你吗? – maxx777

+0

嗯我已经尝试了一些工作的东西。例如,在一个没有线程类的简单服务器客户端上,我已经尝试过了:客户端:ArrayList obj; obj =(ArrayList )ois.readObject();的System.out.println(OBJ);服务器端:ArrayList list = new ArrayList (); oos.writeObject(列表); oos.flush();这工作很好!但在我发布的代码中,它不起作用。我真的不明白:((( –

相关问题