Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Win API


Информационный Канал Subscribe.Ru

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / WinAPI

Выпуск № 48
от 29.03.2005, 09:20

Администратор:Калашников О.А.
В номере:Вопросов: 1, Ответов: 1


Вопрос № 18654: Здравствуйте. Хочу сделать клиентсерверные приложения с помощью WinSock в лок. сети (примерные харак-ки ПК в сети: проц. Pentium 1700, 256 ОЗУ, 20 Gb HDD; пропускная способность зависит от того, в какой подсети находится комп - 10 или 100 Мбитс...

Вопрос № 18654
Здравствуйте.
Хочу сделать клиентсерверные приложения с помощью WinSock в лок. сети (примерные харак-ки ПК в сети: проц. Pentium 1700, 256 ОЗУ, 20 Gb HDD; пропускная способность зависит от того, в какой подсети находится комп - 10 или 100 Мбитсек, но в большинстве случаев 10 Мбитсек)
Идея приложений:
- есть приложение сервер (1шт.) , который работает с клиентами, посылаетпринимает данные
- есть приложения клиенты (много шт. :) хотелось бы примерно около 100) , которые посылаютпринимают данные на сервер
А теперь мои вопросы:
1) Хочу сделать 1 процесс сервер, который ждет соединения, а после соединения с каким-либо клиентом и получения нового сокета сразу же передает его(сокет) другому процессу. Т.е. получается (как я читал в некоторых книгах :)) что-то типа сервера Unix, где на серверной стороне есть главный процесс сервер, который отвечает за подключение новых клиентов и множество процессов, которые отвечают за работу с клиентами (посылка/принятие данных). Так вот сам вопрос: что в данном случае лучше сделать на стороне сервера - множество работающих независимых процессов или множество работающих потоков одного процесса (процесса который отвечает за connect)? Если сделать процессы - то хватит ли производительности сервера (ведь потоки занимают меньше ОЗУ и проц.)?
2) Какое максимальное количество клиентов лучше сделать в данном случае и с данными характеристиками сети (и для процессов и для потоков на стороне сервера)?
3) С помощью чего в данном случае лучше организовать взаимодействие TCP или UDP?
Заранее спасибо за ответы.
Отправлен: 23.03.2005, 13:24
Вопрос задал: andrey (статус: Посетитель)
Всего ответов отправлено: 1

Отвечает: Bob Johnson
Здравствуйте, andrey!
Конечно создание потока занимает намного меньше ресурсов ОС, чем создание дополнительного процесса. Но запуск отдельного процесса для каждого соединения увеличит надежность системы, т.к. в ситуации, если в каком-либо процессе возникнет фатальная ошибка, остальные будут продолжать нормально работать.
Поэтому для ответа на твой вопрос, ты должен определиться, насколько вероятно возникновение фатальной ошибки и как важна тебе конечная надежность системы. Имей в виду, что ты можешь применить exception handling, который позволит отлавливать и обрабатывать ошибки. Таким образом, если при возникновении ошибки не будут повреждены данные, которые используют остальные потоки, они также смогут продолжить нормальную работу.
Думаю, что в современных ОС windows дополнительный процесс не будет отнимать много оперативной памяти, т.к. многие страницы будут использоваться в share режиме, т.к. процессы идентичны. Что касается производительности процессора - то тут большой разницы нет, все будет зависеть от того, насколько сильно каждый твой поток (или процесс - ведь процесс это такой же поток и тоже один по умолчанию) будет загружать процессор своей задачей. Т.е. я бы попробовал с потоками.
Касательно протоколов - UDP протокол без гарантированной доставки, т.е. теоретически при большой загрузке сети UDP пакет может просто потеряться. TCP же гарантирует, что данные будут доставлены, либо ты получить код ошибки. К тому же, при передаче UDP пакетов есть ограничение на максимальный объем транспортируемых данных.
Количество клиентов будет целиком зависеть от того, сколько всевозможных ресурсов будет съедать каждая серверная часть твоей программы.

* EMan2.0: ---===*** Debug mode ***===---

Ответ отправил: Bob Johnson (статус: Академик)
Отправлен: 27.03.2005, 00:20


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2005, RusFAQ.ru, Россия, Москва. Все права защищены.
Идея, дизайн, программирование, авторское право: Калашников О.А.


http://subscribe.ru/
http://subscribe.ru/feedback/
Подписан адрес:
Код этой рассылки: comp.soft.prog.winapifaq
Отписаться

В избранное