Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > Звисание Клиента


Автор: TP@MB@Y 18.7.2005, 02:02
Прога моя на подобии чата. Использует сокеты (ClientSocket & ServerSocket)

Такая проблема: иногда клиент виснет и перестает получать/принимать сообщения, но для сервера он остается активным соединением.... Как выявить зависание? Может через тип ошибок?

Автор: _hunter 18.7.2005, 10:56
как и все... сервер посылает клиенту сообщения с запросом статуса. клиент шлет назад свой статус. если в течении, например, 5-ти минут сообщение со статусом не пришло -- клиент не активен

Автор: RA 19.7.2005, 01:46
TP@MB@Y C этими компонентами одни беды, толи что-то там переполняется толи еще что-то smile.

Уменя была похожая ситуация, только при дальнейшем её изучении оказалось что проблема вовсе не в клиенте каторый как бы замерз, а в сервере у каторого случилось очередное переполнение желудка.

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

Автор: TP@MB@Y 20.7.2005, 16:04
RAdmin
А какая альтернатива сокетам может быть? (стабильная) smile

Автор: RA 20.7.2005, 18:30
Цитата(TP @ 20.7.2005, 16:04)
А какая альтернатива сокетам может быть? (стабильная)


Не сокетам а компонентам.

К примеру ICS.

Автор: Quadr0 22.7.2005, 01:43
...

Автор: TP@MB@Y 22.7.2005, 02:07
Quadr0
Да чат я еще год назад написал. У чистого чата на ServerSocket и ClientSocket никаких проблем нету. У меня немного другое. Прогу то я впринципе написал (мы даже уже по сети пару раз играли), но иногда клиент отрубается, причем у конкретных людей (хотя последний релиз еще не тестился по сетке).

Я кажется знаю в чем дело. Как я понимаю, клиент с сервером обмениваются непрерывными потоками данных. А я посылаю данные без указания их размера. Были глюки, которые я убрал введя задержку после отсылки. Щас параллельно пытаюсь сделать отсылку данных с указанием размера, чтобы задержку не вводить. (Иногда работает, но очень не долго smile ).

PS Я скачал по ссылке. Там надо разбираться. Может какнибуть... а щас неохота. Но всеравно спасибо smile

Автор: RA 22.7.2005, 13:36
Цитата(Quadr0 @ 22.7.2005, 01:43)
Indy, ICS. Самое то для написания чата.


Чата ? Тебе стоит познакомится с этими компонентами, а то так до самой смерти будешь думать. smile

Автор: TP@MB@Y 23.7.2005, 10:34
Я кажется понял из-за чего может быть глюк... Если допустим я записал в поток информацию (buf:TMemoryStream), а потом прочитал в этот поток из сокета: socket.ReceiveBuf(buf,...), то поток дополнится или перезапишется? У меня алгоритм с расчетом, что дополнится... smile Проверять другой вариант сейчас влом, может кто знает заранее? smile

Автор: mighty 25.7.2005, 20:21
Для создания чата надо пользоваться компонентами UDP Server и Client. Причём это намного проще....

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)