|
|
|
Программирование работы сервера с множеством клиентов
|
|||
|---|---|---|---|
|
#18+
onstat-С удовольствием выслушаю конструктивную критику. А что можно критиковать, если этот кусок вне контекста не имеет смысла. Что есть c_nettimer нам неясно. Где работа с витками не видно. А главное для чего это было сделано, не написали. Еще один выпендреж? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2005, 15:34 |
|
||
|
Программирование работы сервера с множеством клиентов
|
|||
|---|---|---|---|
|
#18+
onstat- Землекоп Открою военную тайну. Самое смешное, что такие задачи чаще всего решают люди, которые не особенно вникают в сокеты, ОПП и тд и тп. Им хватает php, perl и тд и тп. Совсем отсталые довольствуются просто html-файлами. WWW - сервер разбирается сам с этими проблемами. Он для этого и был придуман. Посмотрите на название раздела, он называется C++, значит подразумемает обсуждение ООП проекта. Вобщем не нужно съезжать с темы. Вопрос был про общепринятые способы решения аналогичных проблем (только для мультиплатформенного кода с BSDSockets/WinSocks, без компонентов и иже с ними). Я пример нынешнего состояния дел в этой области. Кстати, в вашем коде есть строчка: Код: plaintext А почему вы не воспользовались Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2005, 15:48 |
|
||
|
Программирование работы сервера с множеством клиентов
|
|||
|---|---|---|---|
|
#18+
Землекоп onstat-С удовольствием выслушаю конструктивную критику. А что можно критиковать, если этот кусок вне контекста не имеет смысла. Что есть c_nettimer нам неясно. Где работа с витками не видно. А главное для чего это было сделано, не написали. Еще один выпендреж? Обьясните мне,что вы подразумеваете по термином виток? Это наверное спец термин в вашей организации. В коментариях к классам написано. c_netconn управляет дескрипторами сокетов и соединениями если инициализирован как клент. с_netconnpool пул сетевых соединений с поддержкой мультиплексирования и асинхронного ввода вывода. В общем позволяет прикландому програмисту вычитать сообщение пришедшее по сети из внутренних буферов класса с_netconn. Метод c_netconnpool::socket() засыпает на период указанный в int s_sec; // default sleep in second int s_usec; // default sleep in milisecond (по умолчанию одна секунда). Далее период сна регулируется статистикой прихода новых сообщений. Просыпается сразуже как только в буфере есть принятое сообщение. Да кстате этот работает пока только под unix. Если нужно будет под M$ для прикладного програмиста интерфейс не поменяется. Используется в программе маршрутизаторе XML сообщений. Полный код вы скоро сможете найти в проекте OpenDSA, когда он выйдет. Концептуальное обсуждение проекта пока здесь http://www.sql.ru/forum/actualthread.aspx?tid=185115 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2005, 16:09 |
|
||
|
Программирование работы сервера с множеством клиентов
|
|||
|---|---|---|---|
|
#18+
Землекоп onstat- Землекоп Открою военную тайну. Самое смешное, что такие задачи чаще всего решают люди, которые не особенно вникают в сокеты, ОПП и тд и тп. Им хватает php, perl и тд и тп. Совсем отсталые довольствуются просто html-файлами. WWW - сервер разбирается сам с этими проблемами. Он для этого и был придуман. Посмотрите на название раздела, он называется C++, значит подразумемает обсуждение ООП проекта. Вобщем не нужно съезжать с темы. Вопрос был про общепринятые способы решения аналогичных проблем (только для мультиплатформенного кода с BSDSockets/WinSocks, без компонентов и иже с ними). Я пример нынешнего состояния дел в этой области. Кстати, в вашем коде есть строчка: Код: plaintext А почему вы не воспользовались Код: plaintext Я просил конструктивно. А что есть принципиальная разница? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2005, 16:16 |
|
||
|
Программирование работы сервера с множеством клиентов
|
|||
|---|---|---|---|
|
#18+
onstat- Обьясните мне,что вы подразумеваете по термином виток? Это наверное спец термин в вашей организации. Согласен, что локальный сленг. Один из вариантов перевода Thread onstat- с_netconnpool пул сетевых соединений с поддержкой мультиплексирования и асинхронного ввода вывода. *.cpp глянуть можно? onstat- Да кстате этот работает пока только под unix. Если нужно будет под M$ для прикладного програмиста интерфейс не поменяется. Интересно будет посмотреть, что вы будете менять, тк тут как раз спорят в каком месте хранить изменяемые части и как их реализовывать. onstat- Полный код вы скоро сможете найти в проекте OpenDSA, когда он выйдет. Концептуальное обсуждение проекта пока здесь http://www.sql.ru/forum/actualthread.aspx?tid=185115 Вы только ошибки в каментах поправьте. Многовато. Гляну на весь код, когда появится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2005, 16:26 |
|
||
|
Программирование работы сервера с множеством клиентов
|
|||
|---|---|---|---|
|
#18+
onstat-Я просил конструктивно. А что есть принципиальная разница? Так вот из-за подобной разницы тут весь сыр-бор и произошел. А нужно ли заворачивать в классы sockets & threads API? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2005, 16:29 |
|
||
|
Программирование работы сервера с множеством клиентов
|
|||
|---|---|---|---|
|
#18+
Землекоп onstat- Да кстате этот работает пока только под unix. Если нужно будет под M$ для прикладного програмиста интерфейс не поменяется. Интересно будет посмотреть, что вы будете менять, тк тут как раз спорят в каком месте хранить изменяемые части и как их реализовывать. А храниться они будут в разных файлах, и собираться подключаться по принципу как описал AndreiNz выше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2005, 16:41 |
|
||
|
Программирование работы сервера с множеством клиентов
|
|||
|---|---|---|---|
|
#18+
onstat-А храниться они будут в разных файлах, и собираться подключаться по принципу как описал AndreiNz выше. Вот тогда мы посмотрим на реализацию и подвергнем резкой критике, если создадите что-нибудь типа Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2005, 16:46 |
|
||
|
Программирование работы сервера с множеством клиентов
|
|||
|---|---|---|---|
|
#18+
Землекоп wrote: > Так вот из-за подобной разницы тут весь сыр-бор и произошел. А нужно ли > заворачивать в классы sockets & threads API? мне вот нужно. легко, при необходимости, могу отнаследовать класс и от потокового класса и от сокетного одновременно, и иметьь работу с сокетом в отдельном потоке. Posted via ActualForum NNTP Server 1.2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2005, 16:50 |
|
||
|
Программирование работы сервера с множеством клиентов
|
|||
|---|---|---|---|
|
#18+
onstat А храниться они будут в разных файлах, и собираться подключаться по принципу как описал AndreiNz выше. Что под этим понимаешь ? если то как предлагал AndreiNz то за такое могут дать по ушам и правильно сделают :) А вообще читаемоскь кода имхо оставляет желать лучшего. Object* arr[MAX_PATH] - опять же надо смотреть. Если arr не отвечает за хранение Object то нормально, если же что то типа arr = new ConcreteObject(); .. delete arr; то я б тоже за это по ушам дал :) Только std::vector<shared_ptr<Object> > arr_; Вобщем надо смотреть полный код и разбираться ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2005, 16:56 |
|
||
|
Программирование работы сервера с множеством клиентов
|
|||
|---|---|---|---|
|
#18+
alex_k Землекоп wrote: > Так вот из-за подобной разницы тут весь сыр-бор и произошел. А нужно ли > заворачивать в классы sockets & threads API? мне вот нужно. легко, при необходимости, могу отнаследовать класс и от потокового класса и от сокетного одновременно, и иметьь работу с сокетом в отдельном потоке. Создайте структуру, куда занесите необходимые переменные и передайте ее в thread. Далее передавайте структуру при вызове ваших специфических функций в качестве параметра. Будет также легко. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2005, 16:57 |
|
||
|
Программирование работы сервера с множеством клиентов
|
|||
|---|---|---|---|
|
#18+
Землекоп wrote: > alex_k > > Землекоп wrote: > > Так вот из-за подобной разницы тут весь сыр-бор и произошел. А нужно ли > > заворачивать в классы sockets & threads API? > > мне вот нужно. > легко, при необходимости, могу отнаследовать класс и от потокового > класса и от сокетного одновременно, и иметьь работу с сокетом в > отдельном потоке. > > > > Создайте структуру, куда занесите необходимые переменные и передайте ее > в thread. Далее передавайте структуру при вызове ваших специфических > функций в качестве параметра. Будет также легко. но это разная легкость :-) мне удобнее думать о любой сущности как о объекте и чтобы синтаксис языка мне в этом помогал Posted via ActualForum NNTP Server 1.2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2005, 17:03 |
|
||
|
Программирование работы сервера с множеством клиентов
|
|||
|---|---|---|---|
|
#18+
Землекоп onstat-А храниться они будут в разных файлах, и собираться подключаться по принципу как описал AndreiNz выше. Вот тогда мы посмотрим на реализацию и подвергнем резкой критике, если создадите что-нибудь типа Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Мне не удалось увидеть конструктивной критики этого подхода. Так в чем его недостатки? О достоинствах я знаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2005, 17:06 |
|
||
|
Программирование работы сервера с множеством клиентов
|
|||
|---|---|---|---|
|
#18+
alex_k но это разная легкость :-) мне удобнее думать о любой сущности как о объекте и чтобы синтаксис языка мне в этом помогал Структура, если особенно не углубляться, тот же класс, только члены у структуры по умолчанию public. Разве еще на -> сэкономите внутри класса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2005, 17:09 |
|
||
|
Программирование работы сервера с множеством клиентов
|
|||
|---|---|---|---|
|
#18+
onstat-Мне не удалось увидеть конструктивной критики этого подхода. Так в чем его недостатки? О достоинствах я знаю. Так мы же вашего подхода не узрели Кусок h-файла для одного класса - не открыл нам завесы мудрых планов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2005, 17:12 |
|
||
|
Программирование работы сервера с множеством клиентов
|
|||
|---|---|---|---|
|
#18+
Землекоп onstat-Мне не удалось увидеть конструктивной критики этого подхода. Так в чем его недостатки? О достоинствах я знаю. Так мы же вашего подхода не узрели Кусок h-файла для одного класса - не открыл нам завесы мудрых планов. Так я и вашего подхода в исходниках не видел до сих пор. Даже на том уровне абстракции, который предоставил я. Ваш ход . Потом будем обсуждать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2005, 17:31 |
|
||
|
Программирование работы сервера с множеством клиентов
|
|||
|---|---|---|---|
|
#18+
onstat- Землекоп onstat-Мне не удалось увидеть конструктивной критики этого подхода. Так в чем его недостатки? О достоинствах я знаю. Так мы же вашего подхода не узрели Кусок h-файла для одного класса - не открыл нам завесы мудрых планов. Так я и вашего подхода в исходниках не видел до сих пор. Даже на том уровне абстракции, который предоставил я. Ваш ход . Потом будем обсуждать. Для threads вот мой подход /topic/187358&pg=2#1604298 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2005, 17:38 |
|
||
|
Программирование работы сервера с множеством клиентов
|
|||
|---|---|---|---|
|
#18+
Интегратор Во первых я не вижу аргументации, а во вторых переносимы на программы на С++ надругие компиляторы ? Не хотелось бы вас расстраивать - но переносимы с большой натяжкой. В нашем 21 веке когда есть managed код писать на unmanaged C++ просто нелепо и смешно . Oracle Database на 28 платформах. Мы у себя пишем софт одновременно на несколько платформ. А на сколько платформ переносится managed код ? unix ? Mac ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2005, 17:41 |
|
||
|
Программирование работы сервера с множеством клиентов
|
|||
|---|---|---|---|
|
#18+
LepsikOracle Database на 28 платформах. Мы у себя пишем софт одновременно на несколько платформ. По-моему, Oracle уже почти весь на Java написан. Так это и есть managed код ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2005, 17:45 |
|
||
|
Программирование работы сервера с множеством клиентов
|
|||
|---|---|---|---|
|
#18+
Землекоп alex_k но это разная легкость :-) мне удобнее думать о любой сущности как о объекте и чтобы синтаксис языка мне в этом помогал Структура, если особенно не углубляться, тот же класс, только члены у структуры по умолчанию public. Разве еще на -> сэкономите внутри класса. Стоемость -> по сравнению со стоимость отладки копейки. 1. В структуре вы не сможете переопределить операции +, -, >,<, == ... 2. Переопределить конструктор копирования. 3. А с чисткой памяти за собой в вашем случае вобще полная ж... Давно одину и туже память освобождали 2 раза? Сколько искали место кто и где ее освобождает? Эти преймущества С++ очень тяжело переоценить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2005, 17:47 |
|
||
|
Программирование работы сервера с множеством клиентов
|
|||
|---|---|---|---|
|
#18+
onstat-1. В структуре вы не сможете переопределить операции +, -, >,<, == ... В данной задаче нет необходимости onstat- 2. Переопределить конструктор копирования. Важно, если есть пойнтеры среди членов. В принципе, можете написать функцию для копирования структуры. onstat- 3. А с чисткой памяти за собой в вашем случае вобще полная ж... Давно одину и туже память освобождали 2 раза? Сколько искали место кто и где ее освобождает? В C++ c этим проблем хватает. Блоки памяти, на которые не указывает ни один указатель в программе, не удаляются как в Java. onstat- Эти преймущества С++ очень тяжело переоценить. Так что же вы не используете vector вместо массива ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2005, 17:55 |
|
||
|
Программирование работы сервера с множеством клиентов
|
|||
|---|---|---|---|
|
#18+
[quot Землекоп Для threads вот мой подход /topic/187358&pg=2#1604298[/quot] Код: plaintext Не увидел ни одного объявления массивов, структур итд для хранения информации описывающей subj, Вы же не с одним сокетом работаете. Без этих обьявлений ваш код - офтопик. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2005, 17:57 |
|
||
|
Программирование работы сервера с множеством клиентов
|
|||
|---|---|---|---|
|
#18+
Землекоп Так что же вы не используете vector вместо массива [/quot] Землекоп В данной задаче нет необходимости Вы очень противоречивы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2005, 18:00 |
|
||
|
Программирование работы сервера с множеством клиентов
|
|||
|---|---|---|---|
|
#18+
[quot Землекоп В C++ c этим проблем хватает. Блоки памяти, на которые не указывает ни один указатель в программе, не удаляются как в Java. [/quot] Ну вы даете, почему Ваш код не Java. Не нужно съзжать в офтопик. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2005, 18:05 |
|
||
|
Программирование работы сервера с множеством клиентов
|
|||
|---|---|---|---|
|
#18+
onstat-Не увидел ни одного объявления массивов, структур итд для хранения информации описывающей subj, Вы же не с одним сокетом работаете. Без этих обьявлений ваш код - офтопик. Неконструктивный наезд. Вы же не постите весь код. Это просто пример. Вся информация у меня хранится в связном списке структур (легко делается без всякого С++) и удаляется при завершении витка. При соединение создается структура параметров, которая передается в thread и заносится в linked list. Я всегда знаю сколько у меня серверных соединений и их состояние. В принципе, я не обхожусь уж совсем без c++. Для чистых приложений под Windows я использую MFC, а там есть уже готовые классы для сокетов и threads. Для сложных кросплатформенных frontend GUI клиентов частично использую Qt. Свои классы для обертывания сокетов и витков писать не имеет смысла, тк все давноо прописано. Для критических по времени приложений будет лучше С. В любом случае С++ нет встроенных в язык средств синхронизации между threads. Java более подошла бы. Если нужна скорость и простота в разработке сложной системы клиент-сервер, то web server - готовое решение, которое использует большинством разработчиков в этом мире. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2005, 18:19 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=33125151&tid=2033122]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
47ms |
get topic data: |
10ms |
get forum data: |
5ms |
get page messages: |
77ms |
get tp. blocked users: |
1ms |
| others: | 248ms |
| total: | 420ms |

| 0 / 0 |
