2014-04-11 111 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();這工作很好!但在我發佈的代碼中,它不起作用。我真的不明白:((( –

相關問題