Russian Qt Forum
Ноябрь 23, 2024, 00:22
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Компиляторы и платформы
>
Windows
>
Как создать многопоточный сервер?
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Как создать многопоточный сервер? (Прочитано 13651 раз)
c++
Гость
Как создать многопоточный сервер?
«
:
Май 18, 2004, 20:37 »
Прошу прощения за повторение вопроса, но мое сообщение было удалено, видимо, злыми силами, заставляющими летать базу
Нужно написать многопоточный сервак, принимающий и отсылающий по инету данные. Никогда не писал такого, т.ч. мало что в этом понимаю.
Буду благодарен за ответ на следующий вопрос:
В каких случаях лучше использовать DCOM, а в каких просто писать руками? Да, сразу скажу, что желателен второй способ из-за переносимости в UNIX, но какие проблемы при программировании руками такого сервера возникают?
Также нуждаюсь в информации по написанию такого, а также в исходниках такого простейшего сервера.
Thanx.
Записан
Admin
Administrator
Джедай : наставник для всех
Offline
Сообщений: 1988
Как создать многопоточный сервер?
«
Ответ #1 :
Май 18, 2004, 21:22 »
пробовал смотреть исходники примеров qt
там есть client - server пример
Записан
xaos
Гость
Как создать многопоточный сервер?
«
Ответ #2 :
Май 19, 2004, 18:12 »
Ну все зависит от типа данних которие ти собираєшся разсилать - пиши подробней
А проблеми - ето Декартово произвидение проблем при написании многопоточной програми і проблем при написании клиент сервера
зіж
С++ - обязателен для использования ?
Записан
c++
Гость
Как создать многопоточный сервер?
«
Ответ #3 :
Май 19, 2004, 19:27 »
Спасибо всем за ответы!
1. Обязательно посмотрю хелп в QT. Если он многопоточный, наверное, это подойдет. Спасибо!
2. Типы данных при передаче следующие:
2.1. Большие файлы (до 300 Мб)
2.2. Маленькие файлы (до 50 Мб) (они передаются чаще)
2.3. Небольшая информация.
2.4. Передаются некоторые команды с клиента на сервер (т.е.
видимо нужно сделать типы данных, при получении объектов
которых сервер их интерпретирует как команды. Наверное, так
чаще всего и делается?).
2.5. Сравнение различных md5 сумм, хеш-кодов паролей и т.д.
Язык реализации - С/С++. Вот и какой выбор тут сделать среди технологий?
А нет у тебя какого-нибудь примера проги или ссылка?
Thanx.
Записан
EugeneVC
Гость
Как создать многопоточный сервер?
«
Ответ #4 :
Май 19, 2004, 20:08 »
мне кажется что С++ хватит а все технологии они не платформенно независимы
а еще насчет больших файлов могут возникнуть проблеммы в сдучае если есть проблеммы со связью. Может для больших файлов протокол ftp посмотреть. Он уже отлажен.
Записан
c++
Гость
Как создать многопоточный сервер?
«
Ответ #5 :
Май 20, 2004, 20:54 »
Посмотрел пример Client-Server в справке QT. Там на стороне сервера создаются объекты ClientSocket. Но многопоточный ли этот сервер? Очень смутилa одна вещь в описании класса QServerSocket, который наследует SimpleServer: это про параметр конструктора int backlog:
Цитировать
Use backlog to specify how many pending connections the server can have
А что это за pending connections? Он что, запросы в очередь ставит? Или имеется ввиду постановка запросов в очередь, в то время как создается поток и т.п., т.е. при дополнительной работе сервер не забивал на клиентов, которые к нему коннектятся? Такой пример есть, кто знает, в книге Андрея Робачевского про Unix. Но там используется вызов fork, а как с этим в Windows'е быть?
Thanx.
Записан
xaos
Гость
Как создать многопоточный сервер?
«
Ответ #6 :
Май 21, 2004, 13:14 »
Цитировать
2.1. Большие файлы (до 300 Мб)
2.2. Маленькие файлы (до 50 Мб) (они передаются чаще)
О - тут будут проблеми :twisted:
DCOM - однозначно отпадает
ftp - ето совет хороший
не, пойми меня правильно, написать самому ето конечно можно - но время+нерви на ето уйдет уйма, особенно для 1го человека
Цитировать
2.3. Небольшая информация.
2.4. Передаются некоторые команды с клиента на сервер (т.е.
видимо нужно сделать типы данных, при получении объектов
которых сервер их интерпретирует как команды. Наверное, так
чаще всего и делается?).
2.5. Сравнение различных md5 сумм, хеш-кодов паролей и т.д.
Тут попроще
Но ... все равно геммор
Для етого можна заюзать хоть і qt
Предлагаю как альтернативу такой подход -
веб-сервер(например thhhpd-маленький и шустрий) + cgi-скрипти, что реализуют функциональность
(на С++ если так надо)
[/quote]
Записан
EugeneVC
Гость
Как создать многопоточный сервер?
«
Ответ #7 :
Май 21, 2004, 13:49 »
тоже неплохой вариант
Записан
Anonymous
Гость
Re: Как создать многопоточный сервер?
«
Ответ #8 :
Май 21, 2004, 13:50 »
Цитата: "c++"
Нужно написать многопоточный сервак, принимающий и отсылающий по инету данные. Никогда не писал такого, т.ч. мало что в этом понимаю.
Под УНИХами есть 2 способа создания многопоточности
- fork и клоны
- pthread и клоны
разница в том, что форк - создают клон текущего процесса со своей областью памяти, сохраняя доступ к файловым дескрипторам родителя
pthread - создает УНИХ вариант "нити" - средов LWP. Самый дешевый способ - написание рапперов для УНИХовского pthread и вмндового CreateThread - такой подход позволяет иметь общую логику работы приложения в УНИХ и Вынь с поддержкой IPC и без существенных потерь производительности...
Кроме того спорен сам вопрос о _многопоточности_ пересыльщика данный в УНИХ - там есть довольно простое решение - select - и достаточно одного потока. В Вынь можно сокеты обрабатывать тоже вполне асинхронно через WSxxx
Записан
c++
Гость
Как создать многопоточный сервер?
«
Ответ #9 :
Май 21, 2004, 15:29 »
Посиксный врапер для Windows у меня есть. Пример с fork тоже, но аналога fork для Windows нет. Вот очень хочу разобраться, как делать в случае с pthred'ами. Нет ли какого-нибудь примера?
Thanx.
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...