Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Производительность Tcp-сервера, реализованного с помощью Qt
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Ввод/Вывод, Сеть. Межпроцессное взаимодействие
Nokin
Доброго времени суток!

Присматриваюсь к Qt уже неделю. До этого дела не имел, однако концепция представляется очень привлекательной.

1.
Хочется узнать мнения людей, хорошо знакомых с данным тулкитом вот по какому вопросу. Необходимо реализовать Tcp-сервер, работающий по некоторому протоколу, способный обслуживать одновременно 1000 клиентов легко. Под обслуживанием понимается:
-) Авторизация
-) Прием и получение сообщений (не более 10 в минуту в среднем по 500 байт)
Хватит ли произодительности имеющихся классов?

Выбор Qt продиктован необходимостью работы под Windows и Linux.

2.
Подскажите, имеется ли в Qt поддержка перекрытого ввода/вывода, портов завершения или других методов асинхронного ввода/вывода

3.
Если Вы считаете, что Qt пригодна для реализации поставленной задачи, обозначте, пож-та, в общих чертах решение.

Спасибо.
niXman
Работал с протоколами. Использовал Qt.
Правда не в 1000 потоков. Ну, думаю это не проблема.
Хотя присмотрись ка лучше к boost::asio, там эта часть развита по более. И на столько же тормозлива )))
Litkevich Yuriy
Nokin, еще это глянь Poco Libraries
Nokin
Цитата(niXman @ 12.8.2008, 20:55) *
Хотя присмотрись ка лучше к boost::asio, там эта часть развита по более...

Цитата(Litkevich Yuriy @ 12.8.2008, 22:55) *
Nokin, еще это глянь Poco Libraries


То или другое можно к Qt прикрутить?

Дело ещё и в том, что сервер должен исполняться демоном под Linux и сервисом под Виндой, ну и ещё работать с Oracle, но это, думаю, не проблема.
Litkevich Yuriy
ну boost - С+++ :)
а Poco Libraries написан на чистом C++, теперь вопрос можно ли прикрутить С++ к С++.
помоему, ответ очевиден
sploid
Nokin, у тебя вполне возможно все упрется в базу, а не в работу по приему и передачи данных.

В Qt все сокеты асинхронные, что вполне может вызвать осложнения при работе с ними. Для Qt есть фича по созданию демонов и сервисов ( правда она платная и не входит в опен-соурс редакцию ).

Т.к. клиентов порядка 1000, то каждого клиента засовывать в отдельный поток может быть накладно. Некоторые специалисты считают что именно для таких задач подойдет событийная ( т.е. Qt-шная ) технология работы с сокетом.
Nokin
Цитата(Litkevich Yuriy @ 13.8.2008, 10:33) *
ну boost - С+++ :)
а Poco Libraries написан на чистом C++, теперь вопрос можно ли прикрутить С++ к С++.
помоему, ответ очевиден


Я понимаю, что к C++ прикрутить С++ можно =). Однако мой малый опыт работы с Qt не позволяет не сомневаться, будет ли это одинаково работать на разных платформах. По-видимому, будет. Спасибо.
sploid
при прикручивании каких-либо библиотек к Qt необходимо аккуратно обращаться с Qt-шными объектами из разных потоков, т.к. они этого не любят. Например работать с сокетом из разных потоков нежелательно или вообще нельзя, точно не помню.
Nokin
Цитата(sploid @ 13.8.2008, 10:39) *
Nokin, у тебя вполне возможно все упрется в базу, а не в работу по приему и передачи данных.


Sploid, поясни пож-та. Упрётся: это в плане совместимости (драйвера к БД) или в плане производительности?


Цитата(sploid @ 13.8.2008, 10:39) *
Для Qt есть фича по созданию демонов и сервисов ( правда она платная и не входит в опен-соурс редакцию ).


Знаю, не смущает.


Цитата(sploid @ 13.8.2008, 10:39) *
Т.к. клиентов порядка 1000, то каждого клиента засовывать в отдельный поток может быть накладно. Некоторые специалисты считают что именно для таких задач подойдет событийная ( т.е. Qt-шная ) технология работы с сокетом.


Я тоже считаю, что 1000 потоков в приложении - это перебор. Событийная технология - это слот-сигнальная?
sploid
упрется в плане производительности.

да, слот-сигнальная.
Nokin
Цитата(sploid @ 13.8.2008, 11:32) *
...


Спасибо, буду копать.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.