Форум: "Сети";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
ВнизОстановка сервера Найти похожие ветки
← →
Цукор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;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.081 c