简体   繁体   中英

java Exception: connection reset by peer: socket write error

I'm trying to invoke a method from another class that means I want to use serialization I make an object of method name and it's parameters and write it on a socket but when I want to make ObjectOutputStream I encounter with error "connection reset by peer: socket write error" I searched for the possible reasons but I couldn't find any suitable answer

in the server side I didn't close the sockets or I didn't do any work to close that I don't know what happens then :-??

in the line:

ObjectOutputStream oos = (new ObjectOutputStream(os));

and my piece of code is this:

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

thanks for your helps in advance!

You are writing to a connection that has already been closed by the peer. I find it hard to believe that didn't turn up in your search. The cause of the problem is firstly that you are closing oos , and therefore the socket, in this code, so (a) it won't run the second time, and (b) closing the socket causes the peer to get an EOS condition and close the socket, so (c) the second time you run this code you will run into at least two problems.

There is a third problem you haven't hit yet. You are creating a new ObjectOutputStream every time you run this code rather than using the same one for the life of the socket. Same goes for ObjectInputStream wherever you use it too. If you do what you are doing here you are liable to run into StreamCorruptedException: invalid type code .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM