Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.048 c
3-1281338050
Patrick
2010-08-09 11:14
2013.03.22
Проблема с Collation


3-1278782038
TechnoDreamer
2010-07-10 21:13
2013.03.22
DBX Error: Unsupported field type


15-1338536731
Дмитрий С
2012-06-01 11:45
2013.03.22
Зачем нужно готовиться к экзаменам?


15-1347470775
wl
2012-09-12 21:26
2013.03.22
freecell (win7) в win8?


2-1338853453
Vainu
2012-06-05 03:44
2013.03.22
random,textfile, дипломная работа




   Наверх