Главная страница
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.016 c
1-47599
Администратор
2002-06-28 21:05
2002.07.15
Поиск окон.


3-47132
AlexNord
2002-06-20 05:13
2002.07.15
IBQuery и фильтрация записей


14-47678
Bocman
2002-06-17 10:43
2002.07.15
Глюк


4-47879
cypher
2002-05-08 22:02
2002.07.15
Права пользователей...


14-47692
Tasha
2002-06-09 11:15
2002.07.15
цитата