Автор Тема: Информация по созданию php-сервера к C++-клиенту (UDP-протокол)  (Прочитано 12947 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн aks

  • Администратор
  • Тайный советник
  • *****
  • Сообщений: 2836
  • Репутация: 74
  • Пол: Мужской
Полностью согласен с Леоном. Если нет нужды писать еще и сайт который будет основным средством доступа к серверу, то в PHP для сервера нету вобще никакого смысла - это именно онанизм, ну или забивание гвоздей отверткой если хотите=). PHP инструмент для вполне конкретных целей - создания сайтов. А сервер писать можно на чем нибудь боле подходящим, хотябы C/C++ или Java.
(По секрету в нашей конторе, даже если сайт является важной и неотемлимой частью серевиса, то для более мене сложного взаимодействия с клиентом-приложением, сервер я пишу всеравно на более преднозначенном для этого языке тепа Java, а общий доступ к данным уже через базу)

Единственное, не надо горячиться PHP - это всетаки язык программирования и отрицать это глупо. =)) Но язык для определенных нужд. И ООП там с 5-ой версии тоже есть.
По поводу хостинга - даже если не исспользовать свой сервер, на удаленном хостинге вполне уместно просить разрешить запускать свою программу-сервер. А хостинга с поддержкой java полно кстати. =)
« Последнее редактирование: °ТУгбв 29, 2006, 01:36:29 pm от aks »

Оффлайн aks

  • Администратор
  • Тайный советник
  • *****
  • Сообщений: 2836
  • Репутация: 74
  • Пол: Мужской
Не сразу заметил тут странные мысли
Хочу сказать что мною писано много сетевых приложений (должен признать, что больше всего для нуждающихся студентов :) ), основной проблемой вставала синхронизация... (там есть пара геморойных вопросов).
Вот как раз методы синхронизация очень хорошо проработанны в предложенных мной языках.

И еще один момент в НАДЕЖНОСТИ (и это наверное самый главный критерий) Если на пхп сервере будет пропущен один запрос, это пол беды, а если пропущен целый сокет, или все сокеты (прога глюканула) то это не совсем приятно ни для игрока ни для администратора!!!
А вот тут я просто неодумеваю. Как же вы писали сетевые приложения? Как понять фразу пропущенн сокет или несколько сокетов? Это же просто логический бред )) Вы вобще знаете что такое сокет и какой принцип работы у TCP сокета, да и вобще зачем нужен протокол TCP? (Про семиуровневую модель ISO OSI я уже боюсь спрашивать). Это все нужно как раз для того чтобы держать постоянный и непрерывный канал связи и вслучаее ее потери адекватно реагировать/переподключаться. Если вы не знаете HTTP запросы на веб сервер так же идут через TCP сокет. Просто это протокол более высокого уровня. Но он нужен для HTTP серверов. Для своего же сервера нужен так же свой протокол такого же уровня. =)

Оффлайн aks

  • Администратор
  • Тайный советник
  • *****
  • Сообщений: 2836
  • Репутация: 74
  • Пол: Мужской
Хех, почитал внимательно название темы. Автор хочет исспользовать UDP. Непонятно почему именно его, ну да ладно. В любом случает возможность каких либо HTTP запросов через UDP отсутстует, так что они отпадают сразу. Исспользовать PHP сокеты, как я говорил - изврат. для этого есть нормальные языки.
Хотя посоветовал бы забить на UDP и исспользовать TCP если будут передоваться команды игры и прочее, а не качаться мегобайты информации. Он для этого болшье подходит.

Dmitry_Maksimov

  • Гость
Про семиуровневую модель с aks разговаривать даже не собираюсь, и вообще чем поносить и цепляться за слова лучше бы человеку делом помогли!!! Ему ведь надо "определиться"... Скинули бы пару примеров серверных прог, разъяснили бы че к чему.
И вообще... понаписали тут всякого типа предложенные мною методы (будто бы вы сразу, как только тема открылась сразу заявили: "Java и точка")...
Вот как раз методы синхронизация очень хорошо проработанны в предложенных мной языках.
Я ведь вам до этого даже слова ни сказал, а вы в меня кидаетесь, нехорошо.

По поводу "пропущенные сокет" я имел ввиду разрыв соединения или ещё какие-нибудь пакостные происшествия. Кто хотел, тот понял!

И если вы так внимательно умеете читать названия тем, тот причем тут java? Если он кинеться на изучение нового языка он потеряет еще времени и понасоздает себе кучу вопросов.

И если вы, aks, пришли тут "азбуку" читать, то просьба сопровождать вашу теорию ПРАКТИКОЙ!!!
Просьба опубликовать исходные коды, уж очень мне стало интересно =)
Мне как и другим колесо воссоздавать не хочется уж очень.

P.S. БРЕД - симптом психического расстройства, проявляющийся в ложных суждениях, умозаключениях, которые имеют лишь субъективное обоснование и не поддаются коррекции.
Не знаю как Вам, но мне обидно :(

P.P.S. Это уже ради интереса +)
Недоумение, сомнение, колебание или раздумье.

Недоуметь, становиться недоумным, недоумчивым, глупеть, теряться в мыслях и в уме все более и более. Люди живут, умнеют, а мы живем, недоумеем.

Недоумный человек, слабоумый, тупоумый, недалекий, глуповатый.


Оффлайн Qwesty

  • Коллежский асессор
  • *****
  • Сообщений: 275
  • Репутация: 10
  • Пол: Мужской
  • Вечно пьяный, темный кодер.
Знаю, что сервер известной онлайн игры Lineage 2 написан на Java и C++ с использованием баз данных My/MsSQL, сервер World of Warcraft написан на C++, да и думаю сервера остальных игр тоже написаны на чем-то подобном.

Очень интересно, но мне кажется сервер на ПХП будет выглядеть очень бледно.
Пляшет небо под ногами, пахнет небо сапогами, мы идем, летим, плывем, наше имя ЛЕГИОН...

Оффлайн aks

  • Администратор
  • Тайный советник
  • *****
  • Сообщений: 2836
  • Репутация: 74
  • Пол: Мужской
Ему ведь надо "определиться"... Скинули бы пару примеров серверных прог, разъяснили бы че к чему.
Думаете я буду тут выкладывать исходные коды закрытых комерческих продуктов?
По программированию на Java, C, C++ и в частности программировании сетевых приложений есть огромное количество книг, примеров и исходных текстов. Могу порекомендовать литературу если надо =)
По поводу изучения - я так понял у автора есть проблеммы и с php. А Java изучать по мне куда прощще, из-за полностью объектного подхода, интуитивно понятных элементов языка и стандартных API и хорошего контроля за ошибками и выполнением кода. Да и как бы то ни было, оснавная мысль то - PHP не предназначен для этих целей. Нужно исспользовать адекватный инструмент для решения задачи.


По поводу "пропущенные сокет" я имел ввиду разрыв соединения или ещё какие-нибудь пакостные происшествия. Кто хотел, тот понял!
Вот для этого и нужен протокол TCP, чтобы вовремя отслеживать такие вещи и оперативно на них реагировать. Чтобы не было потери данных никаких.

Оффлайн aks

  • Администратор
  • Тайный советник
  • *****
  • Сообщений: 2836
  • Репутация: 74
  • Пол: Мужской
Хотя по поводу примеров. В разделе C/C++ есть примеры сетевого приложения и прочих типовых задач. Подумываю, может создать простейшие примерчики в разделе Java.

Dmitry_Maksimov

  • Гость
Конечно же все зависит от того, насколько реактивной должна быть игра и от типа решаемой задачаи (может есть какие-нибудь сложные алгоритмы требующие хорошее быстродействие, или же нужна защищенность канала обмена данными). Все же буду признателен появлению шаблона приложения на java с реализацией простейших функций (шаблоны не должны быть комерческой тайной, на то они и шаблоны).

Dmitry_Maksimov

  • Гость
Все же интересно узнать хотя бы о стиле или основных принципах игры (так, в двух словах) если можно.

Оффлайн aks

  • Администратор
  • Тайный советник
  • *****
  • Сообщений: 2836
  • Репутация: 74
  • Пол: Мужской
Конечно же все зависит от того, насколько реактивной должна быть игра и от типа решаемой задачаи (может есть какие-нибудь сложные алгоритмы требующие хорошее быстродействие, или же нужна защищенность канала обмена данными). Все же буду признателен появлению шаблона приложения на java с реализацией простейших функций (шаблоны не должны быть комерческой тайной, на то они и шаблоны).
Пример клиент серверного приложения на Java я вам могу продемонстрировать. Причем можно даже, чтоб клиент был на С++. Только вот какие еще простейшие функции вам нужны кроме подключения и последующиего чтения/записи данных с сокета? Ну хорошо можно еще расширить струку и читать не тупо данные, а заранее определенными пакетами. =)

Dmitry_Maksimov

  • Гость
Только вот какие еще простейшие функции вам нужны кроме подключения и последующиего чтения/записи данных с сокета? Ну хорошо можно еще расширить струку и читать не тупо данные, а заранее определенными пакетами. =)
Вот именно в этих структурах то и должна заключаться синхронизация... Нам не интересно просто так гонять последовательность байт, потом разбирать что к чему (кстати на пхп есть парсер, который разгребет все что принял)... Я так полагаю вы предложите написать код, который будет принимать данные НЕ фиксированной длинны (например "лента" служебной информации в виде текста), потом вы предложите написать еще какие-нибудь вспомогательные функции. А чем дело кончится? Один из вариантов - воссоздание тех же самых HTTP запросов только в ИНОЙ форме... И вообще, вроде как не Quake подобная игруха будет (или я ошибаюсь?)!
Хотя по мне так, я бы клиента на Flash писал (красивее, в модернизации и обновлении куча плюсов) если не ошибаюсь, то так и делается (примеров не приведу, играть в подобные вещи не люблю, затягивает), это я по опыту знакомых сужу 8-).

Оффлайн aks

  • Администратор
  • Тайный советник
  • *****
  • Сообщений: 2836
  • Репутация: 74
  • Пол: Мужской
Вот именно в этих структурах то и должна заключаться синхронизация...
Э нет, давайте отделим мух от котлет. В этих струкурах (классах) не должно заключаться никакой синхронизации. Там должны быть только данные и методы обработки\доступа к ним.
Вся синхронизация какая нужна - должна быть в обработчике сокета. Для каждого подключенного клиента скажем будет создаваться отдельный поток и общение с ним только по его сокету (а как иначе?). А вот при доступе к общим данным этими потоками и нужна синхронизация. Благо средства для этого простые есть.

Я так полагаю вы предложите написать код, который будет принимать данные НЕ фиксированной длинны (например "лента" служебной информации в виде текста), потом вы предложите написать еще какие-нибудь вспомогательные функции. А чем дело кончится? Один из вариантов - воссоздание тех же самых HTTP запросов только в ИНОЙ форме...
Ничего подобного )) Притом HTTP - протокол прикладного уровня для вполне определенных задачь - взаимодействие с веб сервером. Причем с большой кучей недостатков, которые стараются исправлять всякими приладами и ухищьрениями. Для нормального общения между клиентом и сервером он плохо подходит. Потому для своих нужд и создается всегда свой протокол того же уровня, который соответствует задаче и учитывает ее требования.

Хотя по мне так, я бы клиента на Flash писал (красивее, в модернизации и обновлении куча плюсов) если не ошибаюсь, то так и делается (примеров не приведу, играть в подобные вещи не люблю, затягивает), это я по опыту знакомых сужу 8-).
Ну да флэшь конечно хорошо. Недавно по работе пришлось столкнуться с написанием клиента на flash. Раньше никогда с ним дела не имел, но заказчик захотел небольшую приладу на flash встроенную в сайт помимо основной функциональности. =)) Пришлось изучать. С дизайнерской точки зрения flash конечно очень хорошь - туда только пусти дизайнеров и дай им волю. А вот как инструмент программирования к сожалению оказался довольно убог. Action script впринципе немного мдифицированный и подстроенный под нужды флэша JavaScript, с довольно ограниченной функциональностью. Тоесть далать что то типовое можно за счет кучи встроенных классов, но чуть в сторону свое, я честно говоря задолбплся и долго матерился =))
« Последнее редактирование: °ТУгбв 30, 2006, 09:53:29 am от aks »

Dmitry_Maksimov

  • Гость
Flash для нормальных игр (с большими просчетами) не пойдет, уж очень медленно работает, особо должен заметить плохая реализация тригонометрических функций (там есть что поразгонять), но это все было в 5-й версии, что сейчас не знаю, слыхал, что новшества какие-то "серьёзные" (если моно так сказать).

А по поводу обработки принятых байт для конкретного сокета - в этом я и видел пару геморойных вопросов. Задолбался писать обработчик, уж очень было не приятно, хотя сейчас есть новые подходы на эту тему.\

Свой подход объясняю ленивостью написания (переписания), лучше брать готовые и отлаженные модули.
Во всяком случае, если apache глюканет мы тут не причем (хотя мало вероятно, проверено временем), а если в прога вылитит, ручками восстанавливать придется (за apache хостингеры в ответе).

Оффлайн aks

  • Администратор
  • Тайный советник
  • *****
  • Сообщений: 2836
  • Репутация: 74
  • Пол: Мужской
Flash для больших разработок не подходит помимо тормозов еще отсутствием языка позволяющег оразрабатывать большие проекты =)

Свой подход объясняю ленивостью написания (переписания), лучше брать готовые и отлаженные модули.
Во всяком случае, если apache глюканет мы тут не причем (хотя мало вероятно, проверено временем), а если в прога вылитит, ручками восстанавливать придется (за apache хостингеры в ответе).
Ну это кому как. Я всетаки предпочитаю исспользовать адекватные инструменты, причем основанные так же давно известных и отлаженных методах. А за свой код я в ответе да, за это мне и деньги платят )
А то что прога вылетит, так это скорей можно сравнить c багом php-скрипта.
Короче, сегодня завтра выложу примерчик )

Dmitry_Maksimov

  • Гость
Спасибо (как будто я тут игрушки пишу :-) )