Моего заголовка вопроса должно быть достаточно. Я уже пробовал (безуспешно):
- Использование деструктора в стиле C в функции:
__attribute__((destructor))
:void sendToServerAtExit() __attribute__((destructor)) { mySocket->write("$%BYE_CODE%$"); }
Вызывается деструктор приложения, но сокет уже отключен и я не могу писать на сервер.
- Использую стандартную функцию C
atexit()
, но TCP-соединение уже потеряно, поэтому я не могу ничего отправить на сервер.atexit(sendToServerAtExit); // is the same function of point 1
Решение, которое я нашел, - проверять каждую секунду, все ли подключенные сокеты все еще подключены, но я не хочу делать это неэффективно. Это только временное решение. Кроме того, я хочу, чтобы другие приложения (даже веб-приложения) могли присоединиться к чату моего консольного приложения, и я не хочу запрашивать данные каждую секунду.
Что я должен делать?