Клиент GM + Сервер C++
|
|
lumennes | Дата: Суббота, 24 Сентября 2011, 15:13 | Сообщение # 1 |
Убийца Diablo
Сейчас нет на сайте
| В общем не так давно занялся изучением C++ и в голову ударила мысль написать сервак для клиента GM на этом ЯПе. Писал.. писал.. писал.. но так и не дописал... В общем проблема заключается только в передаче и приеме данных, все остальное я сам смогу сделать.
Как доброй души человек выкладываю сервак c++ на всеобщее пользование. Можете делать с ним что хотите, хоть написать сервак убийцы WoW Только прошу о следующем: покажите пример передачи данных с клиентом GM (естественно на 39dll) и этим серваком C++. Думаю на форуме есть люди, которые хотя бы знаю азы C++, ну или хотя бы подскажут что-то.
В общем не смотря на будущую критику, заранее спасибо
Как мало вы знаете, как громко вы судите...
|
|
| |
Stage | Дата: Суббота, 24 Сентября 2011, 15:37 | Сообщение # 2 |
постоянный участник
Сейчас нет на сайте
| Quote WSADATA WsaData; //не знаю что это, но без этого ничего работать не будет! Переписал 10 строк из какого-то туториала по сокетам. Уходи.
|
|
| |
Qvant | Дата: Суббота, 24 Сентября 2011, 15:42 | Сообщение # 3 |
почти ветеран
Сейчас нет на сайте
| lumennes, вообщето это ты должен нам показать ример передачи данных с клиентом GM Проще написать код с нуля чем разбираться в чужом да ещё и написанным новичком .
lumennes, в чём возникнула сложность ? 1)сначала делаешь клиент/сервер на GM по справке 39длл 2)изучаеш протокол ТСР и его реализацию на С++ 3)передаёш данные от GM к вашей программе на С++ на локалхосте
Тут внимание ! 39 длл в заголовке передаёт размер пакета в обратном порядке , а функция передачи строки оканчивается символом "00" а так всё стандартное.
|
|
| |
Rorschach | Дата: Суббота, 24 Сентября 2011, 16:03 | Сообщение # 4 |
участник
Сейчас нет на сайте
| lumennes, ты знаешь как передавать и принимать данные на GM? С остальным могу помочь. Добавлено (24.09.2011, 15:52) --------------------------------------------- То есть с сетью в С++. Добавлено (24.09.2011, 16:03) --------------------------------------------- Только сейчас посмотрел код, улыбнуло.
Never compromise. Not even in the face of Armageddon.
|
|
| |
AGENTX001 | Дата: Суббота, 24 Сентября 2011, 16:11 | Сообщение # 5 |
почётный гцупер
Сейчас нет на сайте
| портируй 39dll на плюсы!!
|
|
| |
lumennes | Дата: Суббота, 24 Сентября 2011, 16:13 | Сообщение # 6 |
Убийца Diablo
Сейчас нет на сайте
| Quote (Stage) Переписал 10 строк из какого-то туториала по сокетам. Уходи. сам уходи. Quote (Qvant) вообщето это ты должен нам показать ример передачи данных с клиентом GM если бы был асс в C++ наверное бы показал. Quote (Qvant) в чём возникнула сложность ? сложность именно в том что я не могу понять как принимать и получать данные между сервером на C++ и клиентом GM на 39dll. Quote (Qvant) 1)сначала делаешь клиент/сервер на GM по справке 39длл он у меня есть, впрочем любой на 39dll подойдет. вот. Quote (Qvant) 2)изучаеш протокол ТСР и его реализацию на С++ ну я его можно сказать заучил уже, но все равно не то вот например что я использую Code char RecvBuffer[1]; while(recv(cliSocket,RecvBuffer,sizeof(RecvBuffer),0)!=0) { printf("%i",RecvBuffer[0]); } это прием данных от клиента сервером и функция printf("%i",RecvBuffer[0]); по моему мнению должна выводить ту цифру действия которого (блин) ему послал клиент, например игрок перемещается (индификатор 4) должен отправлять 4 на сервер (ниже код GML) Code if x!=tx or y!=ty { dll39_buffer_clear(0); dll39_write_byte(4,0); //dll39_write_short(x,0); //dll39_write_short(y,0); dll39_message_send(con.server,0,0,0); } tx=x; ty=y; Ну в общем короче если клиент отправляет 4 к примеру то серв должен принимать 4 и наоборот, но вместо этого либо 1, либо ироглифы... Quote (Qvant) 3)передаёш данные от GM к вашей программе на С++ на локалхосте что я и пытаюсь сделать) Quote (Qvant) Тут внимание ! 39 длл в заголовке передаёт размер пакета в обратном порядке , а функция передачи строки оканчивается символом "00" а так всё стандартное. вот этого я точно не понимаю. преобразовывать данные в обратном порядке или отбрасывать "00" на конце? Quote (Rorschach) ты знаешь как передавать и принимать данные на GM? С остальным могу помочь. ну как передавать данные между GM сервером и клиентом знаю.. Quote (Rorschach) То есть с сетью в С++. а с сетью C++ не получается..
Как мало вы знаете, как громко вы судите...
|
|
| |
Rorschach | Дата: Суббота, 24 Сентября 2011, 16:14 | Сообщение # 7 |
участник
Сейчас нет на сайте
| Quote (AGENTX001) портируй 39dll на плюсы!! А зачем? Хотя портировать думаю не сложно(и даже можно), но сишником эта штука не нужна.
Never compromise. Not even in the face of Armageddon.
|
|
| |
lumennes | Дата: Суббота, 24 Сентября 2011, 16:28 | Сообщение # 8 |
Убийца Diablo
Сейчас нет на сайте
| Quote (Rorschach) Только сейчас посмотрел код, улыбнуло. я старался))) Quote (AGENTX001) портируй 39dll на плюсы!! каким образом?Добавлено (24.09.2011, 16:28) --------------------------------------------- кажись я догадался как портировать 39dll в C++)))
Как мало вы знаете, как громко вы судите...
|
|
| |
Rorschach | Дата: Суббота, 24 Сентября 2011, 16:30 | Сообщение # 9 |
участник
Сейчас нет на сайте
| Quote (lumennes) кажись я догадался как портировать 39dll в C++))) Не знаю что ты там придумал, но сейчас тебе эта задача не по зубам, инфа 100%
Never compromise. Not even in the face of Armageddon.
|
|
| |
Qvant | Дата: Суббота, 24 Сентября 2011, 16:31 | Сообщение # 10 |
почти ветеран
Сейчас нет на сайте
| И и чего сложного ? Вот послал ты один байт: dll39_write_byte(4,0); dll39_message_send(con.server,0,0,0)
И смотри что пришло сервер в формате HEX . По умолчанию 39длл прикрепляет заголовок к TCP пакету из 2 байтов
Code dll39_set_format(sockid,method,sepstr) При отправке сообщений через tcp-сокет сообщения должны быть разделены. DLL предоставляет два метода разделения. dll39_format_binary: Двоичный режим. Установка этого режима приводит к тому, что каждое tcp-сообщение имеет 2-байтовое числовое прикрепление, которое содержит информацию о данных в этом сообщении. Этот метод установлен по умолчанию и рекомендуется к использованию в онлайн-играх.
Но порядок байтов в 39длл в заголовке идёт наоборот
поэтому первые два байта в ТСP пакете будут иметь вид чтото типа этого 0100h (два байта меняются местами , по идеи должно быть 0001h , но в 39dll сделано нестандартно) третий байт будит твоя информация 04h
Сообщение отредактировал Qvant - Суббота, 24 Сентября 2011, 16:38 |
|
| |
Qvant | Дата: Суббота, 24 Сентября 2011, 16:33 | Сообщение # 11 |
почти ветеран
Сейчас нет на сайте
| PS. В сети есть исходники на 39длл на С++ , но зачем если итак там ничего сложного нет
а при передачи строки dll39_write_string(string,bufid)
аналогично придёт на сервер заголовок два байта , потом приходит сама строка , и 39длл добавляет символ null (00h) это тоже в справке написано
Сообщение отредактировал Qvant - Суббота, 24 Сентября 2011, 16:36 |
|
| |
lumennes | Дата: Суббота, 24 Сентября 2011, 16:56 | Сообщение # 12 |
Убийца Diablo
Сейчас нет на сайте
| Все заработало!
Как мало вы знаете, как громко вы судите...
|
|
| |
Qvant | Дата: Суббота, 24 Сентября 2011, 17:06 | Сообщение # 13 |
почти ветеран
Сейчас нет на сайте
| lumennes, ну вот , теберь делай движок сервера на С++ и продавай его за $ всем желающим сделать ММО на GM
|
|
| |
lumennes | Дата: Понедельник, 26 Сентября 2011, 02:18 | Сообщение # 14 |
Убийца Diablo
Сейчас нет на сайте
| Quote (Qvant) ну вот , теберь делай движок сервера на С++ и продавай его за $ всем желающим сделать ММО на GM ок у меня у самого тоже есть идея создать moo на сервере C++ Добавлено (26.09.2011, 02:18) --------------------------------------------- Кому нужен сервер C++ с использованием 39dll и клиент GM обращаться в ЛС пример сервера убицы WoW'a готов P.S. 10$
Как мало вы знаете, как громко вы судите...
|
|
| |
Vinchensoo | Дата: Понедельник, 26 Сентября 2011, 13:57 | Сообщение # 15 |
Злобный социопат с комплексом Бога
Сейчас нет на сайте
| lumennes, ты ничего не сделаешь. Нахамил человеку, который в теме хоть что-то смыслит, в отличие от тебя.
Ты даже на гм не в состоянии еще нормальный сервер написать(в плане качества кода, не то, что на С++).
Удачки
|
|
| |
Polo | Дата: Понедельник, 26 Сентября 2011, 14:11 | Сообщение # 16 |
частый гость
Сейчас нет на сайте
| lumennes, лучший сервер - сервер на perl. Еще в придачу MySQL и готово, стабильная работа - легкий код (и не надо морочиться с C).
|
|
| |
lumennes | Дата: Понедельник, 26 Сентября 2011, 14:26 | Сообщение # 17 |
Убийца Diablo
Сейчас нет на сайте
| вы все такие "умные", я поражаюсь.
Quote (Vinchensoo) Нахамил человеку, который в теме хоть что-то смыслит, в отличие от тебя. где именно и кому? 0_о
Quote (Vinchensoo) lumennes, ты ничего не сделаешь. Quote (Vinchensoo) Ты даже на гм не в состоянии еще нормальный сервер написать(в плане качества кода, не то, что на С++). давайте люди свои ИМХО оставят при себе, ок.
Quote (Polo) лучший сервер - сервер на perl. Еще в придачу MySQL и готово, стабильная работа - легкий код (и не надо морочиться с C). учить еще один ЯП пока в мои планы не входило, так что пока остановлюсь на C++ и при том мне морочится не приходится уже, так как использую 39dll.
Как мало вы знаете, как громко вы судите...
|
|
| |
05142 | Дата: Понедельник, 26 Сентября 2011, 14:26 | Сообщение # 18 |
постоянный участник
Сейчас нет на сайте
| Polo, лучший сервер - на nodeJS + NoSQL(MongoDB). Ассинхронный ввод\вывод + javascript (и не надо морочиться с C и Perl).
mecinvader
|
|
| |
Polo | Дата: Понедельник, 26 Сентября 2011, 14:29 | Сообщение # 19 |
частый гость
Сейчас нет на сайте
| 05142, эт если ресурсов ГЛАЗОМ жуй.
Добавлено (26.09.2011, 14:29) --------------------------------------------- + на локальном может и не потянет.
Сообщение отредактировал Polo - Понедельник, 26 Сентября 2011, 14:30 |
|
| |
lumennes | Дата: Понедельник, 26 Сентября 2011, 14:31 | Сообщение # 20 |
Убийца Diablo
Сейчас нет на сайте
| Polo, 05142, кстати в чем плюс серверов на этих ЯП?
Как мало вы знаете, как громко вы судите...
|
|
| |