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

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

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


То есть клиент понимает, что сервер выключился, и при включении сервера, клиент коннектится автоматически. Но при неправильном выходе из программы( например, при завершении процесса из диспетчера), клиент просто отключается и все. И, мне кажется, что проблема как раз в том, что клиент неправильно воспринимает завершение работы сервера. Помогите разобраться с данной проблемой. Может быть я вообще не в том лесу копаюсь.
  • Вопрос задан
  • 180 просмотров
Подписаться 3 Оценить 1 комментарий
Решения вопроса 1
Nipheris
@Nipheris Куратор тега C#
Будем считать, что речь идёт о клиенте и сервере в контексте взаимодействия по протоколу TCP (если не так - уточните вопрос).

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

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

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