Russian Qt Forum

Qt => Работа с сетью => Тема начата: h3rm1t от Июнь 18, 2010, 12:07



Название: Отсылка сообщения нескольким клиентам
Отправлено: h3rm1t от Июнь 18, 2010, 12:07
Здравствуйте. Реализую простенький многопоточный сервер с помошью QThread(одно подключение - один поток, знаю что так не правильно, но пока оставлю так). И мне нужно, чтобы при подключении нового клиента, время подключения и его ip передавались другим подключенным клиентам. Вопрос в том как правильно сообщить всем потокам , что появились новые данные.


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


Название: Re: Отсылка сообщения нескольким клиентам
Отправлено: garryHotDog от Июнь 18, 2010, 14:54
Цитировать
Почему не правильно?
Это не актуально при большом количестве клиентов!!!
Цитировать
И мне нужно, чтобы при подключении нового клиента, время подключения и его ip передавались другим подключенным клиентам. Вопрос в том как правильно сообщить всем потокам , что появились новые данные.

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