Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 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
3-47087
pavelB
2002-06-20 14:32
2002.07.15
не отображаются LookUp поля


1-47344
strel
2002-07-01 17:16
2002.07.15
Как изменять значения переменных в DLL ??


14-47745
Вадим
2002-06-11 21:46
2002.07.15
mp3, где можно найти?


1-47466
Федина Лидия
2002-06-27 16:27
2002.07.15
Активизация формы после выполнения внешней программы


1-47323
Алибаба
2002-07-01 11:49
2002.07.15
помогите мне





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский