| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > 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 этими компонентами одни беды, толи что-то там переполняется толи еще что-то Уменя была похожая ситуация, только при дальнейшем её изучении оказалось что проблема вовсе не в клиенте каторый как бы замерз, а в сервере у каторого случилось очередное переполнение желудка. Лутше найди себе альтернативные компоненты для работы с сокетами, сэкономишь и время и нервы. |
| Автор: TP@MB@Y 20.7.2005, 16:04 |
| RAdmin А какая альтернатива сокетам может быть? (стабильная) |
| Автор: RA 20.7.2005, 18:30 | ||
Не сокетам а компонентам. К примеру ICS. |
| Автор: Quadr0 22.7.2005, 01:43 |
| ... |
| Автор: TP@MB@Y 22.7.2005, 02:07 |
| Quadr0 Да чат я еще год назад написал. У чистого чата на ServerSocket и ClientSocket никаких проблем нету. У меня немного другое. Прогу то я впринципе написал (мы даже уже по сети пару раз играли), но иногда клиент отрубается, причем у конкретных людей (хотя последний релиз еще не тестился по сетке). Я кажется знаю в чем дело. Как я понимаю, клиент с сервером обмениваются непрерывными потоками данных. А я посылаю данные без указания их размера. Были глюки, которые я убрал введя задержку после отсылки. Щас параллельно пытаюсь сделать отсылку данных с указанием размера, чтобы задержку не вводить. (Иногда работает, но очень не долго PS Я скачал по ссылке. Там надо разбираться. Может какнибуть... а щас неохота. Но всеравно спасибо |
| Автор: RA 22.7.2005, 13:36 | ||
Чата ? Тебе стоит познакомится с этими компонентами, а то так до самой смерти будешь думать. |
| Автор: TP@MB@Y 23.7.2005, 10:34 |
| Я кажется понял из-за чего может быть глюк... Если допустим я записал в поток информацию (buf:TMemoryStream), а потом прочитал в этот поток из сокета: socket.ReceiveBuf(buf,...), то поток дополнится или перезапишется? У меня алгоритм с расчетом, что дополнится... |
| Автор: mighty 25.7.2005, 20:21 |
| Для создания чата надо пользоваться компонентами UDP Server и Client. Причём это намного проще.... |