Название: Как создать многопоточный сервер? Отправлено: c++ от Май 18, 2004, 20:37 Прошу прощения за повторение вопроса, но мое сообщение было удалено, видимо, злыми силами, заставляющими летать базу :)
Нужно написать многопоточный сервак, принимающий и отсылающий по инету данные. Никогда не писал такого, т.ч. мало что в этом понимаю. Буду благодарен за ответ на следующий вопрос: В каких случаях лучше использовать DCOM, а в каких просто писать руками? Да, сразу скажу, что желателен второй способ из-за переносимости в UNIX, но какие проблемы при программировании руками такого сервера возникают? Также нуждаюсь в информации по написанию такого, а также в исходниках такого простейшего сервера. Thanx. Название: Как создать многопоточный сервер? Отправлено: Admin от Май 18, 2004, 21:22 пробовал смотреть исходники примеров qt
там есть client - server пример Название: Как создать многопоточный сервер? Отправлено: xaos от Май 19, 2004, 18:12 Ну все зависит от типа данних которие ти собираєшся разсилать - пиши подробней
А проблеми - ето Декартово произвидение проблем при написании многопоточной програми і проблем при написании клиент сервера зіж С++ - обязателен для использования ? Название: Как создать многопоточный сервер? Отправлено: c++ от Май 19, 2004, 19:27 Спасибо всем за ответы!
1. Обязательно посмотрю хелп в QT. Если он многопоточный, наверное, это подойдет. Спасибо! 2. Типы данных при передаче следующие: 2.1. Большие файлы (до 300 Мб) 2.2. Маленькие файлы (до 50 Мб) (они передаются чаще) 2.3. Небольшая информация. 2.4. Передаются некоторые команды с клиента на сервер (т.е. видимо нужно сделать типы данных, при получении объектов которых сервер их интерпретирует как команды. Наверное, так чаще всего и делается?). 2.5. Сравнение различных md5 сумм, хеш-кодов паролей и т.д. Язык реализации - С/С++. Вот и какой выбор тут сделать среди технологий? А нет у тебя какого-нибудь примера проги или ссылка? Thanx. Название: Как создать многопоточный сервер? Отправлено: EugeneVC от Май 19, 2004, 20:08 мне кажется что С++ хватит а все технологии они не платформенно независимы
а еще насчет больших файлов могут возникнуть проблеммы в сдучае если есть проблеммы со связью. Может для больших файлов протокол ftp посмотреть. Он уже отлажен. Название: Как создать многопоточный сервер? Отправлено: c++ от Май 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 от Май 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 от Май 21, 2004, 13:49 тоже неплохой вариант
Название: Re: Как создать многопоточный сервер? Отправлено: Anonymous от Май 21, 2004, 13:50 Цитата: "c++" Нужно написать многопоточный сервак, принимающий и отсылающий по инету данные. Никогда не писал такого, т.ч. мало что в этом понимаю. Под УНИХами есть 2 способа создания многопоточности - fork и клоны - pthread и клоны разница в том, что форк - создают клон текущего процесса со своей областью памяти, сохраняя доступ к файловым дескрипторам родителя pthread - создает УНИХ вариант "нити" - средов LWP. Самый дешевый способ - написание рапперов для УНИХовского pthread и вмндового CreateThread - такой подход позволяет иметь общую логику работы приложения в УНИХ и Вынь с поддержкой IPC и без существенных потерь производительности... Кроме того спорен сам вопрос о _многопоточности_ пересыльщика данный в УНИХ - там есть довольно простое решение - select - и достаточно одного потока. В Вынь можно сокеты обрабатывать тоже вполне асинхронно через WSxxx Название: Как создать многопоточный сервер? Отправлено: c++ от Май 21, 2004, 15:29 Посиксный врапер для Windows у меня есть. Пример с fork тоже, но аналога fork для Windows нет. Вот очень хочу разобраться, как делать в случае с pthred'ами. Нет ли какого-нибудь примера?
Thanx. |