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

Вниз

Остановка сервера   Найти похожие ветки 

 
Цукор5   (2010-01-25 17:19) [0]

Создал сервер на блокирующих сокетах. В общем, на начальном этапе, при подключении нового клиента создаю отдельный поток(ClientThread) и обмениваюсь данными с клиентом.
Так вот, а предположим, мне необходимо срочно приоставить сервер.
Делаю так :

shutdown(FServerSocket, SD_BOTH);
closesocket(FServerSocket);


Тем самым, мой слушающий поток(ListenThread), для подключения новых клиентов завершается. Но !!! Как быть с потоками, которые уже созданы и работают(ClientThread) ?
Они не останавливаются )) В них продолжается  обмен. Да и , собственно, я не вижу средств для остановки :
1) в Select смотрел на ExceptFds:PFDSet. Ничего не происходит при закрытии сокета сервера.
2) "вкрутил" бы WaitFor с TEvent (как для обычного RS232 порта). Так некуда. У меня ж Select работает.

Хотел услышать мнения. Как правильно остановить сервер, с работающими потоками-клиентами.
Спасибо!


 
grisme ©   (2010-01-25 20:01) [1]

мм.. наверное, "информация" клиента же хранится где-то? список, динмассив? (подразумеваю хранение там client thread handle, client socket handle и т.п.)
делаем closesocket"ы на все client socket handle"ы и WaitForSingleObject"ы для каждого thread handle. ) ну, как-то так.


 
Цукор5   (2010-01-25 22:33) [2]

Да. Не подумал.
Ну что ж ... спасибо, попробую.



Страницы: 1 вся ветка

Текущий архив: 2013.03.22;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.064 c
2-1333908120
Fr
2012-04-08 22:02
2013.03.22
Странное поведение Navigate в TwebBrowser


15-1332455404
Юрий
2012-03-23 02:30
2013.03.22
С днем рождения ! 22 марта 2012 четверг


2-1339576883
Seally
2012-06-13 12:41
2013.03.22
Делфи не признает AdvStringGrid


15-1349614847
картман
2012-10-07 17:00
2013.03.22
клавиатуры Logitech


15-1331238602
Юрий
2012-03-09 00:30
2013.03.22
С днем рождения ! 9 марта 2012 пятница