gpt4 book ai didi

Java:尝试使用 objectoutputstream/objectinputstream 读取对象 - 崩溃

转载 作者:太空宇宙 更新时间:2023-11-04 07:55:25 24 4
gpt4 key购买 nike

在我的服务器类上,我通过 ObjectOutputStream 写入一个 2D 字符数组,客户端使用 ObjectInputStream 读取它。之后,我尝试通过相同的 ObjectOutputStream 将另一个 2D 数组发送到相同的 ObjectInputStream 但程序崩溃了。我猜我的换行符留在了 ObjectOutputStream 中,但我不确定如何摆脱它。我尝试了inFromServ.read()inFromServ.readLine()inFromServ.flush()。这些都没有解决问题=/。任何帮助将不胜感激!

客户端代码:

ObjectInputStream inFromServ = new ObjectInputStream(socket.getInputStream());
printBoard((char[][])inFromServ.readObject()); //Prints the first 2D char array fine

System.out.println(inFromServ.readObject()); //Reads in a string fine
System.out.println(inFromServ.readObject()); //Reads in another string fine

System.out.println("Your shots board:"); //Writes this out fine
printBoard((char[][])inFromServ.readObject()); //Crashes here

服务器代码:

ObjectInputStream in = new ObjectInputStream(clients[0].getInputStream());
ObjectOutputStream out=new ObjectOutputStream(clients[0].getOutputStream());
char p1brd[][]=new char[10][10];
char p1shots[][]=new char[10][10];

out.writeObject(p1brd); //Writes out the first board fine
out.writeObject("some string"); //Writes this string fine
out.writeObject("some more string"); //Writes this string fine
out.writeObject(p1shots); //Don't even think it gets here... If i put a thread.sleep(10000) before this line it still crashes instantaneously after writing "some more string"

客户端处于 while(true) 循环内。一旦 printBoard((char[][])inFromServ.readObject());第二次被调用时,我的 try/catch 捕获了它,并一遍又一遍地输出 catch 语句,直到我停止程序。

最佳答案

它根本不会“崩溃”,它抛出一个异常,并且你的逻辑中有一个错误,即当你遇到异常时你不会放弃阅读。从 SocketTimeoutException 之外的套接字读取的任何异常都是致命的,唯一正确的响应是关闭套接字;停止阅读它;并放弃客户。

下次报告“崩溃”时,请提供实际的异常和堆栈跟踪。

关于Java:尝试使用 objectoutputstream/objectinputstream 读取对象 - 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13697587/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com