Здравствуйте, гость ( Вход | Регистрация )
|
512es |
10.11.2008, 16:00
Сообщение
#1
|
|
Участник ![]() ![]() Группа: Участник Сообщений: 135 Регистрация: 31.10.2008 Пользователь №: 407 Спасибо сказали: 5 раз(а) Репутация: 0
|
всем привет!
пишу многопоточный высокопроизводительный сервер на qt. сервер прослушивает коннекты на определённый порт и на каждое входящее соединение создаёт отдельный поток. при каждом пришедшем пакете поток отсылает главному потоку сообщение через customEvent. вроде работает, только не знаю как правильнее заставить все дочерние потоки (или один выборочно) отослать определённый пакет клиентам? закинул все потоки массив QVector и передаю в customEvent главного потока ид того кто отправил. правильный путь ли я выбрал? |
|
|
|
![]() |
|
512es |
11.11.2008, 11:53
Сообщение
#2
|
|
Участник ![]() ![]() Группа: Участник Сообщений: 135 Регистрация: 31.10.2008 Пользователь №: 407 Спасибо сказали: 5 раз(а) Репутация: 0
|
Цитата(ViGOur) В том потоке в котором был создан объект получатель я провёл эксперимент: прямо в секции run() потока подключаю сигнал readyRead() с сокета, на слот onReadyRead(), который в том же потоке. в onReadyRead() дописываю замкнутый цикл forever; запускаю Winternals Process Explorer и смотрю какой из потоков нагружен. как ни странно загружен главный поток.. пока писал этот пост пришла на ум попробывать вот так: с Qt::DirectConnection слот onReadyRead() отрабатывает в дочернем потоке =) и главное, при подвисшем потоке сервер продолжает принимать соединения и отвечать другим пользователям =) Цитата(ViGOur) Тогда тебе нужно отказаться от схемы "1 соединени - 1 поток", а подумать о реализации схему "много соединений - 1 поток". вот наоборот не вижу смысла отказываться. т.к. при ддос атаке большинство коннектов будут отвергаться потоком принимающим соединения, из за авторизации. а те пользователи которые уже авторизированы будут рабатать без проблемм. мало того, если авторизированый пользователь захочет навредить системе, он сможет подвесить только себя. отвалится по tcp-таймауту =)) т.к. его соединение обрабатывает тот же поток что и все остальные функции обработки действий пользователя =) таким образом хочу максимально изолировать пользователей друг от друга. планируется около 1-2 тыс авторизированых пользователей. мм.. можно ли создать такое колличество потоков? хранить указатель на соединение это конечно удобно.. а как лучше сделать если всётаки 1 поток = 1 соединение?) сам себе отвечу =) Link для линукса наверное будет другое колличество, но думаю мне хватит =) |
|
|
|
512es QThread, QEvent, QTcpServer 10.11.2008, 16:00
Litkevich Yuriy Цитата(512es @ 10.11.2008, 19:00) при каж... 10.11.2008, 16:27
ViGOur Если я тебя правильно понял, то тебе нужен менедже... 10.11.2008, 16:48
512es Litkevich Yuriy, customEvent потому что хочу всё ч... 10.11.2008, 19:05
Litkevich Yuriy Цитата(512es @ 10.11.2008, 22:05) а как я... 10.11.2008, 19:16
ViGOur Цитата(Litkevich Yuriy @ 10.11.2008, 19:1... 11.11.2008, 0:19
ViGOur Цитата(512es @ 11.11.2008, 11:53) а как л... 11.11.2008, 13:23
Litkevich Yuriy Мысль в слух:
Нельзя ли сделать один поток для авт... 11.11.2008, 15:05
512es Цитата(Litkevich Yuriy)если авторизованый пользова... 12.11.2008, 0:43
ViGOur Цитата(512es @ 12.11.2008, 0:43) через си... 12.11.2008, 8:29
512es вообще, это мой первый проект на Qt, потому прошу ... 12.11.2008, 13:06
512es попробовал через сигнал\слот..
connect(th... 12.11.2008, 15:02
512es вообщем, всю голову сломал, не знаю как сделать(
... 13.11.2008, 12:27
ViGOur Цитата(512es @ 13.11.2008, 12:27) не ужел... 13.11.2008, 13:17
ViGOur Вот я пример набросал, правда с рисованием, но дум... 13.11.2008, 14:30
512es ViGOur, спасибо!) то что надо!))
у меня ро... 13.11.2008, 16:42
ViGOur Цитата(512es @ 13.11.2008, 16:42) ViGOur,... 13.11.2008, 18:01
512es разве что от CxThread::drawText() удалось избавить... 15.11.2008, 1:19
Litkevich Yuriy Цитата(512es @ 15.11.2008, 4:19) вообще с... 15.11.2008, 1:29
ViGOur Цитата(Litkevich Yuriy @ 15.11.2008, 1:29... 15.11.2008, 10:28
512es ViGOur, провёл эксперимент:
подключился двумя клие... 20.11.2008, 13:52
ViGOur Цитата(512es @ 20.11.2008, 13:52) а если ... 20.11.2008, 15:21
512es тут просто разные нужды. мне важно чтобы все юзвер... 20.11.2008, 16:59
ViGOur Цитата(512es @ 20.11.2008, 16:59) тут нем... 20.11.2008, 20:21![]() ![]() ![]() |
|
Текстовая версия | Сейчас: 4.3.2026, 22:38 |