Jak wysyłać i odbierać serializowany obiekt w kanale gniazda

Chcę przesłać serializowany obiekt przez kanał gniazda. Chcę, aby ciąg „Hi friend” był obiektem serializowanym, a następnie zapisałem ten obiekt w kanale gniazda, podczas gdy w drugim końcu chcę odczytać ten sam obiekt i pobrać dane.

Wszystkie te rzeczy, które chcę robić przy użyciu JavaSocketChannel. Jak to zrobić? Próbowałem jak poniżej, ale nie otrzymałem żadnych danych po stronie odbiorcy.

private static void writeObject(Object obj, SelectionKey selectionKey) {
    ObjectOutputStream oos;
    try {
        SocketChannel channel = (SocketChannel) selectionKey.channel();
        oos = new ObjectOutputStream(Channels.newOutputStream(channel));

        oos.writeObject(obj);
    } catch (IOException ex) {
        ex.printStackTrace();
    }
}

private static Object readObject(SelectionKey selectionKey) {
    ObjectInputStream ois;
    Object obj = new Object();
    SocketChannel channel = (SocketChannel) selectionKey.channel();
    try {
        ois = new ObjectInputStream(Channels.newInputStream(channel));
        obj = ois.readObject();
    } catch (Exception ex) {
        ex.printStackTrace();
    }
    return obj;
}

questionAnswers(1)

yourAnswerToTheQuestion