|
|
|
Forum Member
      
участник
Last Login: 01.03.2005 10:15
Сообщ.: 34,
Visits: 375
|
|
Господа, кто встречался со следующей проблемой: Трехзвенка, на клиенте используется TSocketConnection, соответственно на компе с сервером стоит Borland SocketServer. И вот эта милая парочка при общениии по модему (видимо при каких-то ошибках связи при перекачке данных) намертво виснет (точнее, виснет клиент, перестает отзываться на запросы) Вопрос в том, как побороть эту гадость...
|
|
|
|
|
новичок
      
участник
Last Login: 12.09.2001 9:08
Сообщ.: 9,
Visits: 100
|
|
у себя я делал два варианта брал у сервера информацию о количестве клиентов (загружен или нет?) если загружен то: 1. уменьшал размер пакета. 2. уменьшал максимальное количество процессов.
если не загружен то наооборот.
Сеанс был такой: Cоздаю клиент, после сенса его удаляю.
вроде:
var a: TSocetClient;
begin Inc(i); //Количество процессов ... try a.Connect; ... //сдесь передаю инф-ию но пакетами с уведомлением a.free Dec(i); end; ... end;
Отдельно завожу таймер (можно еще как-нибудь) где проверяю кол-во клиентов - если клиент завис i - не уменьшается. При определенном кол-ве выдаю сообщение, (себе на адм-ую машину - копию), что систему сильно загружена - надо что-то сделать.
Можно для сеанса создавать отдельный процесс и если он завис, то убивать его - но под Win95-98 не часто завешивается комп полностью. В NT никаких проблем (кстати и зависший клиент освобождается тоже a.Free, только тогда надо запомнить всех клиентов.)
Исходиков под рукой нет. Если не получится, скинь мне фрагмент, я посмотрю.
|
|
|
|