Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.07.15;
Скачать: CL | DM;

Вниз

Socket+WinXP+Закрыть группу=Error+глюк+переполнение   Найти похожие ветки 

 
cyborg ©   (2002-04-29 21:50) [0]

Вот какая штука, в винХР есть такая замечательная весчь, как распределение запущенных программ в группы, на которую нажав правой кнопкой мышки можно все прорграммы этой группы закрыть.
И вот, у меня делается чат. Серверная часть и клиентская, если запустить несколько клиентов они помещаются в панели задачь в группу, а глюк именно в том, что если закрыть эти программы вышеизложенным способом, клиенты естественно подключены к серверу, то, серевер первого клента определяет, что он отключился, у следующих получается ошибка eeDisconnect, но всё бы было чики пуки, да при этой ошибке при выключении серверного сокета, он как и положено, своими силами и одному ему ведомыми способами, видимо пытается там что то послать клиенту, наверное что его хотят по хорошему вырубить :-), вызывает ClientDisconnect и возникает следующая ошибка eeSend, и он опять пытается отключить его опять вызвав ClientDisconnect и получается замкнутый круг и как следствие переполнение стека.

А если закрывать клиенты по одному, то такой фигни не случается! Может кто знает как обойти такой глюкавый круговорот?


 
cyborg ©   (2002-04-30 14:56) [1]

Проблема оказалась вот в чём, при отключении клиента, в событии ClientDisconnect всем клиентам посылается сообщение что кто-то выключился:

For I:=0 to MainForm.ServerSocket1.Socket.ActiveConnections-1 do
Begin {Разослать всем имя отключившегося}
MainForm.ServerSocket1.Socket.Connections[I].SendText(_ChatToAll+_Data.Name+": "+MessageText);
End;

Зацикливание заключается видимо в том, что несколько клиентов отключаются одновременно и инфо о них в Connections[I] не успевает обновится и сокет считается подключённым.

Как обойти вот это дело? Помогите пожалуйста!


 
BAHO ©   (2002-05-04 05:25) [2]

Советую использовать компонент UDP в самый раз для чата...
А эти Client/Server Socket-ы я лично не очень понимаю...
слишком уж много в них всяких заморочек...
В UDP вооще подключатся не надо послал массив символов и усё...
но есть один косяк, мониторить остальных собеседников придется отдельно...



Страницы: 1 вся ветка

Текущий архив: 2002.07.15;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.023 c
8-47606
Alexandr_
2002-03-05 13:53
2002.07.15
Как нарисовать элипс на канвасе, но....


14-47739
Guru
2002-06-11 12:16
2002.07.15
Что такое Delphi ?


6-47639
Sergey_001
2002-05-03 14:52
2002.07.15
У меня к вам два вопроса.


1-47398
Andres
2002-07-02 15:52
2002.07.15
Перетаскивание элементов управления c рамкой контура


1-47506
Schema
2002-07-04 12:09
2002.07.15
Не пойму логику