![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 24.03.2011
Сообщений: 120
|
![]()
Есть простой клиент(протокол TCP-IP. Операционка на которой тестили XP и Windows7): В цикле ждёт сообщения от сервера, получает сообщение,отсылает ответ серверу, возвращается в начало цикла.
Есть простой сервер(протокол TCP-IP. Операционка на которой тестили XP и Windows7): При нажатии кнопки "отослать" создаёт новый поток, отсылает в нём клиенту сообщение, ждёт ответа от клиента, убивает созданный поток. А теперь "краш-тест": Запустили клиент и сервер, соединились. И резко вырубили через диспетчер задач и завершение процесса Клиент. В итоге сервер, при попытке отослать сообщение клиенту удачно его отсылает, но в ответ получает пустую строку. Ладно, с этим можно жить. Просто делаем так, что клиент шлёт пустую строку только в случае когда кто то его убил. Тогда сервер понимает что клиент вырубился и считает его мёртвым. И наконец "краш-тест" №2(вопрос мой заключён тут!): Запустили клиент и сервер, соединились. И резко вырубили через диспетчер задач и завершение процесса Сервер. В итоге клиент начинает судорожно выводить на экран(ну т.е. он счиатет, что получает это сообщение от сервера) в бесконечном цикле последнее присланное сообщение от сервера. Какого чёрта!?!?!? Или хотя бы дайте ответ на вопрос - как дать понять клиенту, что сервер "убили"? ps:можно, конечно, обработать ситуацию, что если пришло от сервера куча повторяющихся сообщений через очень маленький промежуток времени, то скорее всего сервер лежит с ножом в затылке... но... но это бред. Должен же быть другой сопособ.)) Или подобная проблема встречена вами впервые, что скорее всего указывает на ошибку в моём коде? Тогда как происходит реакция клиента на гибель сервера по законам жанра? Последний раз редактировалось Ksardas13; 22.04.2011 в 19:06. |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
![]()
> ну т.е. он счиатет, что получает это сообщение от сервера
это не он считает, а вы считаете, т.к. неправильно работаете с сокетом. что именно неправильно, давайте код, посмотрим. > как происходит реакция клиента на гибель сервера по законам жанра? тихо и спокойно с возвратом кода ошибки (обычно это WSAECONNRESET, но могут быть и другие).
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 24.03.2011
Сообщений: 120
|
![]()
Угу, понятно, значит ошибка у меня. Спс.
Щас пока сам побьюсь немного головой о написанное, если не поможет, выложу здесь код. |
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 24.03.2011
Сообщений: 120
|
![]()
=D Всё, ошибку нашёл. Прост запутался в нагромождении процедур, в итоге пропустил обработку ошибок для функций получения и отсылки сообщения.
Тему можно закрывать. И спасибо за вдохновление и ответ на мой глупый вопрос. ![]() |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Убийство процесса по символам, возможно? | gpcore | Общие вопросы C/C++ | 3 | 18.09.2010 18:11 |
Убийство миллиционеров в Приморье | Баламут | Свободное общение | 62 | 16.06.2010 11:39 |
Подскажите метод работы сервера и клиента 1с:Бухгалтерия | kakawkin | Софт | 2 | 24.12.2009 15:59 |
ЧАТЮ для клиента и сервера | -HunteR- | Работа с сетью в Delphi | 27 | 18.04.2008 09:30 |