java异常:peer通过peer重置连接:socket写入错误

use*_*163 0 java socketexception

我正在尝试从另一个类调用一个方法,这意味着我想使用序列化我创建方法名称的对象和它的参数并将其写在套接字上,但是当我想创建ObjectOutputStream时遇到错误"由同行重置连接:套接字写入错误"我搜索了可能的原因,但我找不到任何合适的答案

在服务器端我没有关闭套接字或我没有做任何工作关闭,我不知道会发生什么: - ??

在线:

ObjectOutputStream oos = (new ObjectOutputStream(os));
Run Code Online (Sandbox Code Playgroud)

我的代码是这样的:

InvocationVO invo = new InvocationVO("showStart", treasure, round);

for (int i = 0; i < numPlayer; i++) {
    OutputStream os = socket.get(i).getOutputStream();
    ObjectOutputStream oos = (new ObjectOutputStream(os)); // this has error
    oos.writeObject(invo);

    oos.close();
    os.close();
    Client.getClients()[i].invoke();
}
Run Code Online (Sandbox Code Playgroud)

感谢您的帮助!

use*_*421 5

您正在写入已由对等方关闭的连接.我发现很难相信你的搜索没有出现.问题的原因首先是你oos在这个代码中关闭,因此是套接字,因此(a)它将不会第二次运行,并且(b)关闭套接字会导致对等体获得EOS条件,关闭套接字,所以(c)第二次运行此代码时,您将遇到至少两个问题.

还有第三个问题你尚未命中.ObjectOutputStream每次运行此代码时都会创建一个新代码,而不是在套接字的生命周期中使用相同的代码.ObjectInputStream无论你在哪里使用它都是一样的.如果你做你在这里做的事,你可能会遇到StreamCorruptedException: invalid type code.