да не нужно создавать новый: D

ою клиент-серверный проект.
Мне нужно, чтобы клиент отправлял строку, например «Pendu», а сервер получал эту строку и отправлял объект с именем «Pendu» обратно клиенту.

Вот мой код:

// server
ServerSocket serverSocket = new ServerSocket(6789);
System.out.println("accepting...");
Socket socket = serverSocket.accept();
BufferedReader inFromClient = new BufferedReader(new InputStreamReader(socket.getInputStream()));
ObjectOutputStream outToClient = new ObjectOutputStream(socket.getOutputStream());
String clientMsg = inFromClient.readLine();
System.out.println("Received from client: " + clientMsg);
Object obj;
System.out.println("building object...");
obj = Class.forName("Data." + clientMsg).newInstance();
System.out.println("object built");
if(obj instanceof Pendu)
{
    System.out.println("Send to client: " + obj);
    outToClient.writeObject(new Pendu());
}


//client
Socket socket = new Socket("localhost", 6789);
DataOutputStream outToServer = new DataOutputStream(socket.getOutputStream());
System.out.println("sending...");
outToServer.writeBytes("Pendu");
System.out.println("sent");
ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
System.out.println("receiving...");
Object obj = ois.readObject(); // it is blocked here and I don't know why
System.out.println("received");

КлассPendu определяется в пакетеData:

package Data;

public class Pendu implements Serializable
{
    private static final long serialVersionUID = 1L;
    private static String[] words = new String[]{"bonjour", "bonsoir", "hier", "france", "ordinateur"};
    private static Random rand = new Random();
    private String but;

    public Pendu()
    {
        this.but = words[rand.nextInt(words.length)];
    }

    public int getLenth()
    {
        return this.but.length();
    }

    public String getBut()
    {
        return this.but;
    }

    @Override
    public String toString()
    {
        return "I'm a pendu object";
    }
}

Моя проблема:
Сначала я запускаю сервер и вижу, чтоaccepting... отображается в консоли.
Затем я выполняю клиент, в консоли я получаю сообщения, как показано ниже:

sending...
sent
receiving...

В то же время, ничего нового не показано на стороне сервера.
Теперь я останавливаю клиента и все остальные сообщения сервера показываются:

Received from client: Pendu
building object...
object built

Конечно, я получаю также ошибку:

java.net.SocketException: сломанная труба

Это логично, потому что я убиваю клиента, который еще не закончил получать.
Я не знаю, почему клиент не может получить, как ожидалось.

Ответы на вопрос(1)

Ваш ответ на вопрос