Форум: "Сети";
Текущий архив: 2004.07.04;
Скачать: [xml.tar.bz2];
ВнизServer.Сlose=error?? Найти похожие ветки
← →
zyx © (2004-05-03 12:54) [0]Всем привет! Подскажите пожалуйста: как закрыть сервак при дисконнекте клиента? Использую serversocket,client socket, неблокирующий режим. Если клиент отсоеденился, то мне неоюходимо завершить прослушивание порта серваком. В обработчике OnClientDisconnect пишу server.close и как только выхожу из обработчика то вываливается куча ошибок, например такая: попытка выполнить оперцию над обьектом не являющимся сокетом Api closesocket (ну или что-то вроде етого). Я так понимаю значит нельзя сервак закрывать до выхода из обработчика события OnClientDisconnect. Можно ли как нибудь ето обойти кроме того как использовать таймер? Заранее блогадарен за помощь.
← →
SergP © (2004-05-03 13:00) [1]>понимаю значит нельзя сервак закрывать до выхода из обработчика события
>OnClientDisconnect
А PostMessage не подойдет?
← →
zyx © (2004-05-03 21:50) [2]Подойдет или нет я не знаю потому-что не могу как раз ето реализовать((( Может кто-нибудь подскажет как это сделать?
← →
zyx © (2004-05-06 20:32) [3]PostMessage не катит. Народ может кто-нибудь сталкивался с такой проблемой? Помогите плиз, ну очень надо...
← →
Verg © (2004-05-06 22:41) [4]
> zyx © (06.05.04 20:32) [3]
> PostMessage не катит.
Почему не катит? В чем проблема?
← →
zyx © (2004-05-06 23:32) [5]//Почему не катит? В чем проблема?
Ведь может сложиться такая ситуация (взависимотси от загрузки проца), что процедура которая обрабатывает посланное через PostMessage сообщение выполниться перед end"ом?
← →
Verg © (2004-05-06 23:56) [6]
> zyx © (06.05.04 23:32) [5]
> //Почему не катит? В чем проблема?
> Ведь может сложиться такая ситуация (взависимотси от загрузки
> проца), что процедура которая обрабатывает посланное через
> PostMessage сообщение выполниться перед end"ом?
Ни в коем разе. Дело все происходит в одном потоке (главном). Ты вызываешь PostMessage в обработчике подобных им сообщений. Эта функция просто ставит сообщение в очередь сообщений данному окну, принадлежащему данному потоку и на этом ее ф-ции заканчиваются.
"На пальцах", упрощенный цикл обработки сообщений:
while true do
begin
GetMessage(....); // Здесь мы извлекаем следующее сообщение из очереди, если оно там есть
DispatchMessage(...); //Вот здесь произойдет вызов обработчика взятого с очереди сообщения и, соответственно, пока тот не завершит свои действия, цикл обработки не продолжится. В этом обработчике на очередь сообщений могут быть установлены другие сообщения, но они будут просто установлены в очередь, а их обработка произойдет только на следующих итерациях приведенного цикла
end;
То, чего ты испугался может произойти если вместо PostMessage ты применишь SendMessage, которая при этих же условиях приведет прямо к вызову обработчика этого сообщения, а не к установке сообщения в очередь.
← →
zyx © (2004-05-07 00:35) [7]to Verg Спасибо за ответ!
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2004.07.04;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.033 c