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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Отсылка сообщения нескольким клиентам  (Прочитано 2867 раз)
h3rm1t
Гость
« : Июнь 18, 2010, 12:07 »

Здравствуйте. Реализую простенький многопоточный сервер с помошью QThread(одно подключение - один поток, знаю что так не правильно, но пока оставлю так). И мне нужно, чтобы при подключении нового клиента, время подключения и его ip передавались другим подключенным клиентам. Вопрос в том как правильно сообщить всем потокам , что появились новые данные.
Записан
kibsoft
Хакер
*****
Offline Offline

Сообщений: 625


Просмотр профиля WWW
« Ответ #1 : Июнь 18, 2010, 14:29 »

Цитировать
знаю что так не правильно
Почему не правильно?
Threaded Fortune Server Example посмотри.
Чтобы всем отослать, нужно где-то хранить информацию обо все юзерах(можно указатели на thread), i.e. QList. Соответственно посылку делать через сигналы/слоты (Qt::QueuedConnection), иначе будет ругаться.
Записан

http://kibsoft.ru - Download the Qt Media Encoding Library here

The apps that were written using QtMEL:
http://srecorder.com - Screen recording software
garryHotDog
Гость
« Ответ #2 : Июнь 18, 2010, 14:54 »

Цитировать
Почему не правильно?
Это не актуально при большом количестве клиентов!!!
Цитировать
И мне нужно, чтобы при подключении нового клиента, время подключения и его ip передавались другим подключенным клиентам. Вопрос в том как правильно сообщить всем потокам , что появились новые данные.

 Можешь сделать у каждого клиента слот типа slot_hasNewConnection(quin32 ip,quin16 port,QTime ConnectionTime), и при подключении нового клиента посылай всем соответствующий сигнал....соединить слот и сигнал можешь при создании нового клиента-это избавит тебя от создания списка всех клиентов....будешь просто посылать "широковещательный" сигнал!
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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