Форум: "Сети";
Текущий архив: 2002.07.15;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.011 c