Могу ли я запустить событие, когда сокет успешно закрыт в Java? - PullRequest
0 голосов
/ 14 марта 2012

Ссылка на вопрос, который я задавал ранее, для закрытия сокета нужно несколько раз: Почему он предупреждает, что сокет закрывается, когда я покидаю программу?

        providerSocket.close();

МожетЯ прошу его запустить несколько кодов, когда я закрываю сокет?Спасибо.

1 Ответ

3 голосов
/ 14 марта 2012

Я столкнулся с этой проблемой с SocketChannel с, и, насколько я могу судить (и насколько может сказать переполнение стека), не существует поддерживаемого способа сделать это с JDK. Однако я не позволил этому остановить меня. При правильной инкапсуляции вы можете сделать что-то вроде этого:

public class SocketWrapper implements Closeable {
    private final Socket socket;

    public SocketWrapper(Socket socket) {
        this.socket = socket;
    }

    /**
    * Provide all the methods you need in your application
    * for accessing the internal socket
    */

    public void close() throws IOException {
        socket.close();
        fireClosedEvent();
    }

    /**
    * Event firing methods, etc.
    */
}

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...