Задать вопрос
alexey_sigida
@alexey_sigida

Как поймать неправильное завершение работы сервера?

Ловлю выход из программы через событие, использующее ConsoleEvent:
public enum ConsoleEvent
		{
			CTRL_C = 0,
			CTRL_BREAK = 1,
			CTRL_CLOSE = 2,
			CTRL_LOGOFF = 5,
			CTRL_SHUTDOWN = 6
		}


То есть клиент понимает, что сервер выключился, и при включении сервера, клиент коннектится автоматически. Но при неправильном выходе из программы( например, при завершении процесса из диспетчера), клиент просто отключается и все. И, мне кажется, что проблема как раз в том, что клиент неправильно воспринимает завершение работы сервера. Помогите разобраться с данной проблемой. Может быть я вообще не в том лесу копаюсь.
  • Вопрос задан
  • 182 просмотра
Подписаться 3 Оценить 1 комментарий
Помогут разобраться в теме Все курсы
  • OTUS
    C# Developer. Professional
    6 месяцев
    Далее
  • Ulearn.me
    Основы программирования на примере C#. Часть 1
    1 неделя
    Далее
  • Software-testing.ru
    Программирование на C# для тестировщиков
    10 недель
    Далее
Решения вопроса 1
Nipheris
@Nipheris Куратор тега C#
Будем считать, что речь идёт о клиенте и сервере в контексте взаимодействия по протоколу TCP (если не так - уточните вопрос).

Сообщите клиенту, что сервер штатно завершает работу, и клиент будет знать, что есть смысл подключаться заново. Если сервер отключается и не посылает такого сообщения - клиент считает, что сервер завершил работу нештатным образом и больше не подключается. Более того, вы можете сообщить клиенту через сколько секунд/минут/часов вновь можно подключиться к серверу - клиент не будет париться и стучаться в закрытые ворота, пока сервер еще не поднялся.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Никак.
Процесс можно заверить или усыпить, и никто ничего не сообщит.
Только если будет другой процесс который будет следить за первым.
Ответ написан
Комментировать
@OwDafuq
Ну не знаю, я лично использую библиотеку NetSockets и там все очень удобно реализовано, посмотри в ее сторону.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы