簡體   English   中英

將ArrayList從服務器傳遞到客戶端Java(故障)

[英]Passing an ArrayList From Server to Client Java (Trouble)

我可能不知道這是一個愚蠢的問題,但似乎我很困在這里。

所以我有一台服務器,我在數組列表中添加了一些元素

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

run()

我有這樣的東西

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 ...

查看我在應用程序中使用的代碼

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);

        }
    }

我知道這不是您的問題的確切答案,但會有所幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM