Cómo enviar y recibir objetos serializados en el canal socket

Quiero transmitir un objeto serializado a través de un canal de socket. Quiero hacer la cadena "Hola amigo" como objeto serializado y luego escribir este objeto en el canal de socket, mientras que en el otro extremo quiero leer el mismo objeto y recuperar los datos.

Todas estas cosas que quiero hacer usando Java.SocketChannel. ¿Como hacer esto? He intentado como a continuación, pero no obtuve ningún dato en el lado del destinatario.

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

Respuestas a la pregunta(1)

Su respuesta a la pregunta