Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C/C++ Сетевое программирование
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.04.2011, 19:00   #1
Ksardas13
Форумчанин
 
Регистрация: 24.03.2011
Сообщений: 120
Вопрос WinSock и насильственное убийство клиента/сервера

Есть простой клиент(протокол TCP-IP. Операционка на которой тестили XP и Windows7): В цикле ждёт сообщения от сервера, получает сообщение,отсылает ответ серверу, возвращается в начало цикла.
Есть простой сервер(протокол TCP-IP. Операционка на которой тестили XP и Windows7): При нажатии кнопки "отослать" создаёт новый поток, отсылает в нём клиенту сообщение, ждёт ответа от клиента, убивает созданный поток.

А теперь "краш-тест": Запустили клиент и сервер, соединились. И резко вырубили через диспетчер задач и завершение процесса Клиент. В итоге сервер, при попытке отослать сообщение клиенту удачно его отсылает, но в ответ получает пустую строку. Ладно, с этим можно жить. Просто делаем так, что клиент шлёт пустую строку только в случае когда кто то его убил. Тогда сервер понимает что клиент вырубился и считает его мёртвым.


И наконец "краш-тест" №2(вопрос мой заключён тут!): Запустили клиент и сервер, соединились. И резко вырубили через диспетчер задач и завершение процесса Сервер.
В итоге клиент начинает судорожно выводить на экран(ну т.е. он счиатет, что получает это сообщение от сервера) в бесконечном цикле последнее присланное сообщение от сервера. Какого чёрта!?!?!?

Или хотя бы дайте ответ на вопрос - как дать понять клиенту, что сервер "убили"?
ps:можно, конечно, обработать ситуацию, что если пришло от сервера куча повторяющихся сообщений через очень маленький промежуток времени, то скорее всего сервер лежит с ножом в затылке... но... но это бред. Должен же быть другой сопособ.))
Или подобная проблема встречена вами впервые, что скорее всего указывает на ошибку в моём коде? Тогда как происходит реакция клиента на гибель сервера по законам жанра?

Последний раз редактировалось Ksardas13; 22.04.2011 в 19:06.
Ksardas13 вне форума Ответить с цитированием
Старый 22.04.2011, 19:45   #2
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

> ну т.е. он счиатет, что получает это сообщение от сервера

это не он считает, а вы считаете, т.к. неправильно работаете с сокетом. что именно неправильно, давайте код, посмотрим.

> как происходит реакция клиента на гибель сервера по законам жанра?

тихо и спокойно с возвратом кода ошибки (обычно это WSAECONNRESET, но могут быть и другие).
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 23.04.2011, 03:00   #3
Ksardas13
Форумчанин
 
Регистрация: 24.03.2011
Сообщений: 120
По умолчанию

Угу, понятно, значит ошибка у меня. Спс.
Щас пока сам побьюсь немного головой о написанное, если не поможет, выложу здесь код.
Ksardas13 вне форума Ответить с цитированием
Старый 23.04.2011, 08:14   #4
Ksardas13
Форумчанин
 
Регистрация: 24.03.2011
Сообщений: 120
По умолчанию

=D Всё, ошибку нашёл. Прост запутался в нагромождении процедур, в итоге пропустил обработку ошибок для функций получения и отсылки сообщения.
Тему можно закрывать. И спасибо за вдохновление и ответ на мой глупый вопрос.
Ksardas13 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Убийство процесса по символам, возможно? 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