Всем доброго времени суток! Практикую передачу данных по сокетам от клиента к серверу и наоборот, в случае передачи текста через PrintWriter все работает хорошо, но как только пытаюсь передавать объекты через ObjectOutputStream, сервер выбрасывает исключение SocketException: connection reset. 
Суть: клиент подсоединяется к серверу и отправляет ему сообщение - объект, содержащий в себе имя отправителя и его ID. Сервер этот объект принимает и выводит в консоль имя и ID отправителя.
Серверpackage objectschange;
import java.io.*;
import java.net.*;
public class ServerSide {
  protected ObjectInputStream serverOIS;
  public static void main(String[] args) {
    ServerSide server = new ServerSide();
    server.launchServer();
  }
  private void launchServer() {
    try {
      ServerSocket srvSocket = new ServerSocket(3200);
      while (true) {
        Socket serverClientSocket = srvSocket.accept();
        serverOIS = new ObjectInputStream(serverClientSocket.getInputStream());
        handleObject(serverOIS);
      }
    } catch (Exception ex) {
      ex.printStackTrace();
    }
  }
  private void handleObject(ObjectInputStream serverOIStream) {
    ClientMessagePackage messagePackage;
    try {
      while ((messagePackage = (ClientMessagePackage) serverOIStream.readObject()) != null) {
        System.out.println(messagePackage.packageSender + " " + messagePackage.packageSenderID);
      }
    } catch (Exception ex) {
      ex.printStackTrace();
    }
  }
}
 
Клиент
package objectschange;
import java.io.*;
import java.net.*;
public class ClientSide  {
  protected ObjectOutputStream clientOOS;
  public static void main(String[] args) {
    ClientSide client = new ClientSide();
    client.establishConnection();
  }
  private void establishConnection() {
    try {
      Socket clientSocket = new Socket("127.0.0.1", 3200);
      Thread.sleep(3000);
      clientOOS = new ObjectOutputStream(clientSocket.getOutputStream());
      sendPackage(clientOOS, new ClientMessagePackage("Name", 1));
    } catch (Exception ex) {
      ex.printStackTrace();
    }
  }
  private void sendPackage(ObjectOutputStream clientOOStream, ClientMessagePackage clientMPackage) {
    try {
      clientOOStream.writeObject(clientMPackage);
      clientOOStream.flush();
    } catch (Exception ex) {
      ex.printStackTrace();
    }
  }
}
class ClientMessagePackage implements Serializable {
  protected String packageSender;
  protected int packageSenderID;
  protected ClientMessagePackage(String name, int id) {
    packageSender = name;
    packageSenderID = id;
  }
}
  
Запускаю вначале сервер, ожидающий запроса, затем клиента, к нему подключающегося. Консоль:
При этом если после первого клиента подключить еще одного, то в итоге объект с сообщением до сервера доходит, он его печатает в консоль, но затем снова выбрасывается исключение:
Если я правильно понимаю, клиент самостоятельно отключается от сервера(?), почему это происходит?
Не могу понять, в чем проблема, прошу вашего совета. 
Заранее благодарю за ответы!