这可能是一个我不知道的愚蠢问题,但似乎我已经陷入了困境。
所以我有一个服务器,我在这个
的数组列表中添加了一些元素ArrayList<Accounts> acc= new ArrayList<>();
on 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)
我认为服务器因某些原因无法发送列表,是的,我的帐户类是Serializable!
会喜欢一些意见!
编辑:我发现它,它不是oos,而是ooos ......答案 0 :(得分: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);
}
}
我知道这不是你问题的确切答案,但它会对你有所帮助