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

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.022 c
4-1085408812
tower
2004-05-24 18:26
2004.07.04
Запустить процес и подождать пока работает


14-1087325194
XIII
2004-06-15 22:46
2004.07.04
Проблемка


1-1087755454
Dextor
2004-06-20 22:17
2004.07.04
Form1.Icon


3-1086766094
Роман
2004-06-09 11:28
2004.07.04
Lookup поля в runtime


4-1084443548
Ozone
2004-05-13 14:19
2004.07.04
Модем