Russian Qt Forum
Ноябрь 26, 2024, 11:16 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: отключение от QTcpServer  (Прочитано 8055 раз)
ilyagoo
Гость
« : Октябрь 21, 2008, 09:09 »

Сервер на одном компе, клиенты на другом. Как отследить отключение клиентов от сервера с помощью QTcpServer без использования таймера (по таймеру можно было бы отслеживать количество подключений)? Клиенты - QTcpSocket.
Записан
Rcus
Гость
« Ответ #1 : Октябрь 21, 2008, 09:46 »

http://doc.trolltech.com/4.4/qabstractsocket.html#disconnected
Цитировать
void QAbstractSocket::disconnected ()   [signal]

This signal is emitted when the socket has been disconnected.
Записан
IMPOMEZIA
Гость
« Ответ #2 : Октябрь 21, 2008, 15:11 »

Можно долго ждать:
void QAbstractSocket::disconnected ()
если клиент отключился каким-нибуть неправильным способом, например методом выдёргивания сетевого кабеля или переходом в ждущий режим.
Записан
ilyagoo
Гость
« Ответ #3 : Октябрь 21, 2008, 15:13 »

Цитировать
This signal is emitted when the socket has been disconnected.
Сокет-то понятно как узнает об отключении сервера, а вот как узнает об этом сервер???
Записан
Rcus
Гость
« Ответ #4 : Октябрь 21, 2008, 15:50 »

QTcpServer разделяет соединения через
Цитировать
QTcpSocket * QTcpServer::nextPendingConnection ()   [virtual]
Returns the next pending connection as a connected QTcpSocket object.
действительно, сам он не узнает Улыбающийся
Записан
Admin
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1988



Просмотр профиля
« Ответ #5 : Октябрь 21, 2008, 17:55 »

в веб серверах
1) если клиент не прислал данные в течении timeout, удаляем клиента
2) keep-alive - клиент посылает каждый минуту маленький пакетик
Записан
ilyagoo
Гость
« Ответ #6 : Октябрь 22, 2008, 12:06 »

Кстати, еще один вопрос.
В примерах к Qt есть некий chat. Это приблизительно то, что мне нужно, но...
Я запускаю его на разных машинах и вижу следующий результат:
в линухе он видит себя и остальные запущенные экземпляры под любой осью, в виндах он видит себя и все линуксовые экземпляры, но не видит ни одного из запущенных на машинах под виндами. винды в домене, перевод в рабочую группу не помогает. брандмауэр отключен. что не так?
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.05 секунд. Запросов: 23.