|
|
|
Программирование работы сервера с множеством клиентов
|
|||
|---|---|---|---|
|
#18+
AndreiNzИнтегратор, А Вам не приходило в голову, что ваш вариант 2 как раз является попыткой воплотить в С то, что я предложил в самом начале. Второй вариант использует косвенный вызов процедур что не есть хорошо - тоже самое как и не очень хорошо злоупотреблять виртуальными функциями, что вы настойчиво навязываете. А макросы ужасно неприятны в отладке и к тому же они очень толерантны к глупым ошибкам. Как только Ваши макросы станут посложнее, вы почувствуете эту проблему. Если вы обратили внимаение то так реализована компиляция в уникоде/без уникода в Сях например - и ничего - проблем пока не встречал. Такое использование макросов вполне нормально. Кроме этого макросы не решат проблемы с ассоциированными данными. HANDLE - то же запрятанное что-то что кстати тоже разное в зависимоти от версии винды :). К чему я это - ук тому что передавайте void* как внутреннее состояние в функции. Короче поставленную автором топика задачу можно и нужно решить хоть на голом С и ООП здесь совершенно не причём - нарвится пользуйся - не нравится - не пользуйся. Проблемы буду в любом случае и где их будет больше - вопрос совершенно не однозначный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2005, 14:57 |
|
||
|
Программирование работы сервера с множеством клиентов
|
|||
|---|---|---|---|
|
#18+
AndreiNz, Если вас макросы смущают, то темплейты должны быть вообще смертельны Кстати, что там у нас с уровнем абстракции при инкапсуляции? Я жду, где про это дело можно почитать в интернете и книжках. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2005, 15:02 |
|
||
|
Программирование работы сервера с множеством клиентов
|
|||
|---|---|---|---|
|
#18+
КодерAndreiNz, Если вас макросы смущают, то темплейты должны быть вообще смертельны Кстати, что там у нас с уровнем абстракции при инкапсуляции? Я жду, где про это дело можно почитать в интернете и книжках. Если AndreiNz хочет пытаться быть последовательным, (хотя после заявлений о паттернах, на вопросы о которых он кстати отказался отвечать, всё может быть :) ) он должен тащится от шаблонов в реализации С# - компилируемые, типобезопасные... и поэтому совершенно убогие и непригодные для метапрограммирования :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2005, 15:23 |
|
||
|
Программирование работы сервера с множеством клиентов
|
|||
|---|---|---|---|
|
#18+
ЗемлекопMasterZiv, вы просто либо не все прочитали, либо не понимаете суть проблемы. Если есть умные мысли, то примеры кода в студию. У меня мысли есть, и причем, прошу заметить, все мысли гениальные и божественные. Я прочитал следующее : автор Во всем мире получается без всяких интерфейсов и абстрактных классов на обычном С , более мне читать не нужно - я и так понял суть проблемы. Так вот, по этому поводу есть две мысли : 0) С++ рулез, С - отстой. 1) В нашем 21 веке, когда есть возможность писать на С++, писать на С просто нелепо и смешно. Именно поэтому я и поддержал AndreiNz, потому что он прав. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2005, 19:09 |
|
||
|
Программирование работы сервера с множеством клиентов
|
|||
|---|---|---|---|
|
#18+
MasterZiv У меня мысли есть, и причем, прошу заметить, все мысли гениальные и божественные. Не думаю, что под влиянием алкоголя или травки у вас могут быть такие мысли. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2005, 19:31 |
|
||
|
Программирование работы сервера с множеством клиентов
|
|||
|---|---|---|---|
|
#18+
[quot MasterZiv 0) С++ рулез, С - отстой. Именно поэтому я и поддержал AndreiNz, потому что он прав.[/quot] Во первых я не вижу аргументации, а во вторых переносимы на программы на С++ надругие компиляторы ? Не хотелось бы вас расстраивать - но переносимы с большой натяжкой. Я уж молчу о проблемах с бинарниками на С++ - например при желании поместить объект в dll ... И не приводите в качестве примера COM - полноценных бинарных компонент, реализующий возможности С++ вы не сделаете. 1) В нашем 21 веке, когда есть возможность писать на С++, писать на С просто нелепо и смешно. В нашем 21 веке когда есть managed код писать на unmanaged C++ просто нелепо и смешно . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2005, 10:33 |
|
||
|
Программирование работы сервера с множеством клиентов
|
|||
|---|---|---|---|
|
#18+
Сначала отвечу Крдеру. Проблемы с макросами обусловленны прежде всего тем, что макросы обрабатывает препроцессор. А темплэйты обрабатываются компилятором. Их иногда еще называют макросами, одобренными компилятором. В связи с этим отладка темплейтов удобнее отладки макросов. Да, спасибо, что напомнили. Исправляю ошибку. Полиморфизм обеспечивает более высокий уровень абстракции нежели инкапсуляция. Copyright (c) AndreiNz 2005. All rights reserved. При перепечатке ссылка на данный пост обязательна. Теперь Интегратору. Вроде бы я пытался отвечать на все ваши вопросы, даже не самые скромные. Видиимо где-то упустил. Не сочтите за труд, повторите, что вы спрашивали у меня про Design patterns а я такой - сякой не ответил. Просто лень перелопачивать весь топик. Теперь про HANDLE, по вашему посту видно, что вы не совсем понимаете, что это такое. Так вот, когда вы просите Windows создать какой-либо объект (не путать с ООП). Он, если может, делает это и возвращает вам уникальный идентификатор, который вы можете использовать для дальнейших операций с этим объектом. В Win32 это всегда будет 32 константа, а в Win16 (Windows 3.1, WFWG и тд), возможно и 16-ти, но этим я не занимался. Так, если вам, что-либо интересно, вы спрашивайте, я вам многое могу рассказать. Ну например что такое ISR и DPC и зачем они нужны. Или для чего в COM создаются proxy и stab-ы. Кстати, я тоже хотел бы узнать, чем занимается ваша фирма, только я не буду утверждать, что у нее негодная продукция. Мне воспитание не позволят делать подобные заявленя, без 100% уверенности в правоте подобного заявления. Кстати, сколько вы сами разработали подобных серверов, может у вас есть огромный опыт, а я всего лишь любитель (на фоне вас), который сделал всего два и третий серьезно переделал. Работают ли ваши сервера, где-либо? Спасибо за ответ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2005, 03:36 |
|
||
|
Программирование работы сервера с множеством клиентов
|
|||
|---|---|---|---|
|
#18+
AndreiNzСначала отвечу Крдеру. Проблемы с макросами обусловленны прежде всего тем, что макросы обрабатывает препроцессор. А темплэйты обрабатываются компилятором. Их иногда еще называют макросами, одобренными компилятором. В связи с этим отладка темплейтов удобнее отладки макросов. Да, спасибо, что напомнили. Исправляю ошибку. Полиморфизм обеспечивает более высокий уровень абстракции нежели инкапсуляция. Copyright (c) AndreiNz 2005. All rights reserved. При перепечатке ссылка на данный пост обязательна. Оба объяснения похожи на старый анекдот: - В Петербурге жить лучше, чем в Москве. - Чем лучше то? - Чем в Москве. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2005, 08:07 |
|
||
|
Программирование работы сервера с множеством клиентов
|
|||
|---|---|---|---|
|
#18+
AndreiNz Теперь Интегратору. Вроде бы я пытался отвечать на все ваши вопросы, даже не самые скромные. Видиимо где-то упустил. Не сочтите за труд, повторите, что вы спрашивали у меня про Design patterns а я такой - сякой не ответил. Просто лень перелопачивать весь топик. Вы утверждали о каких-то накладных расходах, связанных с DP. Для меня это равносильно утверждению что ООП приводит к накладным расходам. С со вторым вы миритесь, а с первым - нет :) Как это понимать ? Теперь про HANDLE, по вашему посту видно, что вы не совсем понимаете, что это такое. HANDLE может быть что угодно - это концепция не Windows, а общий подход инкапсуляции внетренний структуры объекта. Это может быть как просто целое число, являющееся например индексом в некотором массиве указатель на объекты, как и например непосредственно адресом, по которому расположен объект. Соответсвенно handle позволяет программировать на процедурных языках в ООП стиле - вот и всё. Так вот, когда вы просите Windows создать какой-либо объект (не путать с ООП). Он, если может, делает это и возвращает вам уникальный идентификатор, который вы можете использовать для дальнейших операций с этим объектом. А вот тут кстати с удовольствие попутаю с ООП . Виндоус - объектно0ориентированная система и объекты виндоус вполне можно рассматривать как объекты. Для меня эти два примера кода являются равноценными - да и компилятор сгенерит похожий код - в первом случае он сам передаст состояние объекта, а во вторым - это делаете вы сами Код: plaintext 1. 2. 3. 4. 5. 6. 7. Код: plaintext 1. 2. 3. 4. 5. 6. 7. В Win32 это всегда будет 32 константа, а в Win16 (Windows 3.1, WFWG и тд), возможно и 16-ти, но этим я не занимался. Так, если вам, что-либо интересно, вы спрашивайте, я вам многое могу рассказать. Ну например что такое ISR и DPC и зачем они нужны. Или для чего в COM создаются proxy и stab-ы. Кстати, я тоже хотел бы узнать, чем занимается ваша фирма, только я не буду утверждать, что у нее негодная продукция. Системы автоматизации финансовых расчётов. Кстати, сколько вы сами разработали подобных серверов, может у вас есть огромный опыт, а я всего лишь любитель (на фоне вас), который сделал всего два и третий серьезно переделал. Работают ли ваши сервера, где-либо? Спасибо за ответ. Я не считаю их по количеству - надо смотреть что имеено и как вы сделали, можно и 100 сделать. Я сделал 3. Два на скорую руку, второй уже кстати 1.5 лет работает, перезагружался два раза при профилактических работах на сервере. Третий серьёзно переработал и продолжаю перерабатывать. Думаю работы на нём ещё на полгода как минимум хватит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2005, 10:09 |
|
||
|
Программирование работы сервера с множеством клиентов
|
|||
|---|---|---|---|
|
#18+
AndreiNzТеперь про HANDLE, по вашему посту видно, что вы не совсем понимаете, что это такое. Так вот, когда вы просите Windows создать какой-либо объект (не путать с ООП). Он, если может, делает это и возвращает вам уникальный идентификатор, который вы можете использовать для дальнейших операций с этим объектом. В Win32 это всегда будет 32 константа, а в Win16 (Windows 3.1, WFWG и тд), возможно и 16-ти, но этим я не занимался. HANDLE - это void * . См. winnt.h. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2005, 11:14 |
|
||
|
Программирование работы сервера с множеством клиентов
|
|||
|---|---|---|---|
|
#18+
Землекоп HANDLE - это void * . См. winnt.h. Ещё более интересные вещи можно нарыть если покопаться в исходниках например той же 2000-ной винды :) Но на самом деле это не принципиально, главное что handle - это что-то что ассоциируется с некоторой структурой данных о которыой вы ничего не знаете. Ну скажем так: НЕ ДОЛЖНЫ ничего знать ;). Так как если эту структуру передавать не как void* то вы легально сможете менять её как угодно не следуя рекомендациям. Например см. CRITICAL_SECTION ... А вообще это уже оффтоп и я вообще имел в виду не реализацию в винде а пытался донести до AndreiNz что Сишные методики, о которых шла речь прекрасно работают и активно используются во множестве рабочих комерческих проектов..... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2005, 17:15 |
|
||
|
Программирование работы сервера с множеством клиентов
|
|||
|---|---|---|---|
|
#18+
Интегратор prof79А библиотекам как разруливать внутри себя? Вариант номер 1 Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Вариант 2 Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. Смеялся, Создаем себе проблемы и героически их преодалеваем Интегратор Для меня эти два примера кода являются равноценными - да и компилятор сгенерит похожий код - в первом случае он сам передаст состояние объекта, а во вторым - это делаете вы сами Код: plaintext 1. 2. 3. 4. 5. 6. 7. Код: plaintext 1. 2. 3. 4. 5. 6. 7. В Win32 это всегда будет 32 константа, а в Win16 (Windows 3.1, WFWG и тд), возможно и 16-ти, но этим я не занимался. Так, если вам, что-либо интересно, вы спрашивайте, я вам многое могу рассказать. Ну например что такое ISR и DPC и зачем они нужны. Или для чего в COM создаются proxy и stab-ы. Смеялся еще сильнене, вставьте между run(obj, 123); и dealloc(obj); пару сотен строк кода, и пока я буду смеяться дальше, а вы будете заниматься отладкой(поиском утечки памяти и т.д. и т.п.) А как насчет глупых ошибок, типа обращения по неверному типу указателя. Согласитесь человеческий фактор существует всегда. Я еще смеюсь , а вы продолжайте заниматься отладкой. Ну насмешили. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2005, 20:22 |
|
||
|
Программирование работы сервера с множеством клиентов
|
|||
|---|---|---|---|
|
#18+
ТО Интегратор Ваш стиль ведения проекта напоминает старую поговорку Два солдата из стройбата заменяют экскаватор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2005, 20:29 |
|
||
|
Программирование работы сервера с множеством клиентов
|
|||
|---|---|---|---|
|
#18+
onstat, умников тут и без вас хватает. Ваш код в студию, если хотите, что-либо обсуждать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2005, 21:22 |
|
||
|
Программирование работы сервера с множеством клиентов
|
|||
|---|---|---|---|
|
#18+
AndreiNz1 Разберитесь с socket API socket(), listen(), accept(), connect() и тд. 2. Напишите два класса ListeningSocket & ConnectedSocket, можно унаследывать их от одного базового MySocket. Или ищите все это на Интернете. Если не хотите зависимосто ит платформы, то Вам нельзя пользоваться всякими WSSoket-ами. Но полная независимость у Вас врядли получится. Поэтому можете использовать интерфейсы interface или абстрактные классы, что в прицыте почти одно и тоже. 3. Создавть отдельный процесс на каждое соединение довольно накладно. Стандартное решение - использовать Thread или как их еще называит потоки. Разберитесь с этим вопросом очень хорошо. 4. Не помешает хорошое знание объектно-ориентированного программирования в C++. Мое изначальное намерине отнюдь не было - ввяызываться в спор о ООП. Однако, из собственного опыта я знаю, что ООП существенно упрощает разработку любых приложений. Прежде всего за счет того, что вы создаете собственные абстракции, с которыми вы сами потом и работаете. Да, нужно владеть этим предметом на достаточно высоком уровне, но это справедливо для любой технологии и любого языка. Использование же интерфейсов позволяет вам задать контракт или спесификацию, которой должны удовлетворять те, кто хочет ими пользоваться. Наилучший, на мой взгляд, пример интерфейса - это электрические вилка с розеткой. В одну и туже розетку вы можете воткнуть и пылесос и дрель и телевизор. Совершенно разные приборы. Но пока они имеют соответствующий интерфейс - они будут работать. И если через 20 лет появится что-либо, о чем мы сейчас и предположить не можем, то это что-либо тоже может быть подключено к старой надежной розетке. Само использование этого подхода позволяет вам получить достаточно независимые слои, которые относительно просто соединять как друг с другом так и с новыми элементами. Я тоже когда-то прошел через отрицание ООП, пока сам не попыталя его мспользовать. Что-то получилось, но полную силу ООП можно почувствовать, когда используешь все возможности данного подхода. А разве это не справедливо для любой технологии? Да я погорячился, когда сказал, сто Design patterns могут завести куда угодно. Признаю, правильнее было бы сказать, что сдуру можно и шею сломать. Что уже было сказанно мной. Землекоп, Попробуйте поиграть с ООП. Начните не с сокетов и Thread-ов, а с бизнес логики. Когда почувствуете вкус и саму идею, тогда можете переходить к сокетам и тд. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2005, 00:02 |
|
||
|
Программирование работы сервера с множеством клиентов
|
|||
|---|---|---|---|
|
#18+
AndreiNzПопробуйте поиграть с ООП. Начните не с сокетов и Thread-ов, а с бизнес логики. Когда почувствуете вкус и саму идею, тогда можете переходить к сокетам и тд. Яйца курицу учат ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2005, 00:59 |
|
||
|
Программирование работы сервера с множеством клиентов
|
|||
|---|---|---|---|
|
#18+
поскипано.. AndreiNz Я тоже когда-то прошел через отрицание ООП, пока сам не попыталя его мспользовать. Так кто же отрицал ООП ??!! Мне кажется что концепции ООП никто в этой ветке особо не оспаривал, спорили с Вашими утверждениями и некорректными и высказываниями... Автор спросил как решить поставленную задачу - ему сказали как, а Вы в ответ на это стали утверждать что тут без ООП никуда... Вот Крамер великолепно обходиться умудрялся (до сих пор его книгу полистываю ;) ). Более современные авторы с ООП пишут совершенно непотребную литературу, а Вы говорите ООП изучайте... Надо концепции общие изучать и подходы, а не зацикливаться на конкретной технологии. Средство не должно быть замоцелью. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2005, 01:39 |
|
||
|
Программирование работы сервера с множеством клиентов
|
|||
|---|---|---|---|
|
#18+
Землекоп, Так для справки, я профессионально, те за деньги разрабатываю парограммы так, чтобы не соврать 22-23 годика как. Так, что кто яйца, а кто курица, это еще надо посмотреть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2005, 03:28 |
|
||
|
Программирование работы сервера с множеством клиентов
|
|||
|---|---|---|---|
|
#18+
Интеграторпоскипано.. Автор спросил как решить поставленную задачу - ему сказали как, а Вы в ответ на это стали утверждать что тут без ООП никуда ... Тоесть по вашему фраза AndreiNz. Не помешает хорошое знание объектно-ориентированного программирования в C++. означает, что без ООП никуда. Знаете, мне простительно недопонимание русского языка, так как я на живу в России уже около 9 лет, но вам, вы уж извините... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2005, 03:35 |
|
||
|
Программирование работы сервера с множеством клиентов
|
|||
|---|---|---|---|
|
#18+
AndreiNzЗемлекоп, Так для справки, я профессионально, те за деньги разрабатываю парограммы так, чтобы не соврать 22-23 годика как. Так, что кто яйца, а кто курица, это еще надо посмотреть. Сколько же вам лет, дедушка? При таком аттитьюде, я бы больше 23 и не дал бы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2005, 11:01 |
|
||
|
Программирование работы сервера с множеством клиентов
|
|||
|---|---|---|---|
|
#18+
AndreiNz Тоесть по вашему фраза AndreiNz. Не помешает хорошое знание объектно-ориентированного программирования в C++. означает, что без ООП никуда. Знаете, мне простительно недопонимание русского языка, так как я на живу в России уже около 9 лет, но вам, вы уж извините... Вы очень серьёзно преувеличили важность ООП для поставленно автором топика задачи. ООП к этой задаче вообще не имеет никакого отношения. Это равносильно утверждению - для этой задачи желательно ещё знание С# ... и т.п. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2005, 13:35 |
|
||
|
Программирование работы сервера с множеством клиентов
|
|||
|---|---|---|---|
|
#18+
ИнтеграторВы очень серьёзно преувеличили важность ООП для поставленно автором топика задачи. ООП к этой задаче вообще не имеет никакого отношения. Это равносильно утверждению - для этой задачи желательно ещё знание С# ... и т.п. :) Открою военную тайну. Самое смешное, что такие задачи чаще всего решают люди, которые не особенно вникают в сокеты, ОПП и тд и тп. Им хватает php, perl и тд и тп. Совсем отсталые довольствуются просто html-файлами. WWW - сервер разбирается сам с этими проблемами. Он для этого и был придуман. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2005, 14:16 |
|
||
|
Программирование работы сервера с множеством клиентов
|
|||
|---|---|---|---|
|
#18+
Землекопonstat, умников тут и без вас хватает. Ваш код в студию, если хотите, что-либо обсуждать. Ну коль вы так хотите пожалуйста, пример API сетевого мультиплексора (часть моего уже готового проекта). С удовольствием выслушаю конструктивную критику. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. Теперь ваша очередь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2005, 14:53 |
|
||
|
Программирование работы сервера с множеством клиентов
|
|||
|---|---|---|---|
|
#18+
Землекоп Открою военную тайну. Самое смешное, что такие задачи чаще всего решают люди, которые не особенно вникают в сокеты, ОПП и тд и тп. Им хватает php, perl и тд и тп. Совсем отсталые довольствуются просто html-файлами. WWW - сервер разбирается сам с этими проблемами. Он для этого и был придуман. Посмотрите на название раздела, он называется C++, значит подразумемает обсуждение ООП проекта. Вобщем не нужно съезжать с темы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2005, 15:02 |
|
||
|
Программирование работы сервера с множеством клиентов
|
|||
|---|---|---|---|
|
#18+
onstat-С удовольствием выслушаю конструктивную критику. Теперь ваша очередь. Для конструктивной критику нужно в вашу проблематику вникуть. А так на первый взягляд мне нотация используемая не очень нравится :) Я например привык к длинным названиям побробным с использованием прописных букв в начале каждлого слова. Но в принципе это дело вкуса ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2005, 15:06 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=33111139&tid=2033122]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
63ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
63ms |
get tp. blocked users: |
1ms |
| others: | 216ms |
| total: | 384ms |

| 0 / 0 |
