Форум » Вопрос-Ответ » Клиент-Сервер » Ответить

Клиент-Сервер

Ev-genius: У мну вопрос, большинсво конструкторов поддерживают мультиплеер, как правило юзается tpc или upd в итоге получаем игрушку которая может быть или клиетном или сервером или всё вместе. например в гамаке так: подразумевается что клиентом будет игра, а сервером или этаже игра или програмка написаная на этом же конструкторе, на гамаке же. а что если мне хочется игрушку на конструкторе, а сервер на чемто что есть в бесплатных хостингах (php,perl может питон если его гденить можно поставить бесплатно) так вот суть в чём, ктонибудь знает хостинг где можно поставить сервер с которым можно было бы по тпс или юпд общаться? какие языки там обычно используются на стороне сервера и тд. хотелось бы услышать мнения, потому как я попробовал сделать по http протоколу примерчик (гамак и пхп), на компе работает, а на ноуте нет. вроде и круглосуточный доступ и всё такое, а с другой стороны хз сколько человек выдержит вот хотелось узнать как можно реализовать сервер и может заодно попробовать что у мну получилось =)

Ответов - 33

Кто-то: Мнение одно - стандартными онлайн функциями на гамаке ничо не сделаешь. Выход один - 39dll.

Ev-genius: ну я эту библиотеку посути и имел ввиду, она у мну в примере юзается соединяется с сервером по хттп единственный минус выловил, неполучается на одном и томже конекте висеть, походу пхп сервер обрывает связь как только ответит =\ и новые и новые тпс придётся создавать. вот хз-хз правильно ли я это дело юзаю и не является ли это самодейтельностью не в ту степь, вдруг есть средства гораздо стабильнее и проще. в плане сервера у кого есть желание затестить, по адресу evl2.web44.net/gm/index.php можно зарегаться (ник пас и цвет выбрать), то что там ктото онлайн это просто я выкидывание в офф не делал =) далее по адресу evl2.web44.net/gm/net.rar у мну лежит мой пример, это ехе на гамаке кто хочет, предлагаю заглянуть туда завтра(воскресенье) после обеда, чтобы народу было побольше, моно глянуть на скорость и у кого не пойдёт этот пример. там уже выложу гмк как верну его в обратное рабочее состояние. ну и хочется чтобы поделились мыслями каким языком на сервере можно держать норм тпс-юпд соединение, и на каких хостах это моно сделать

Кто-то: Хм, неплохо, действительно надо бы затестить))


Ban Forever: Ev-genius пишет: так вот суть в чём, ктонибудь знает хостинг где можно поставить сервер с которым можно было бы по тпс или юпд общаться? какие языки там обычно используются на стороне сервера и тд. ну вообще, хостинга серверов я лично никогда не видел) единственный выход - брать вдс и ставить туда свой собственный сервер. правда в этом случае провайдер может тебя зарубить за траффик, если будешь слишком нагружать. так что при широком использовании- надо арендовать или покупать свой собственный сервер и платить за траффик самостоятельно. языки - ну, вообще любые языки программирования(пхп - язык скриптов, а не программирования). в сервере скорее важна сама структура, а не прелести того или иного языка.

Ev-genius: я прост знаю перл работает с сокетами например, на прослушку и тд. на пхп таког нету. вот можно было бы замутить серверскую часть на перле тогда оставалась бы проблема найти норм хост. эт только с перлом, но гораздо уверенне ся чувствуешь когда выбор побольше =)

Кто-то: А вобще что делает данная "демка"? Каждый шаг просит пхп скрипт записывать своё местоположение и передавать другим?

zuko: Ev-genius пишет: я прост знаю перл работает с сокетами например, на прослушку и тд. на пхп таког нету. А помоему есть...давно натыкался гдето на геймдев.. чувачки прослушивали сокеты с помощью php... не уверен но помоему да А я вот делал игру наподобе браузерок только не с помощью 39длл а с помощью гет текст ......................... Воо хорошо что я всякий ненужный хлам храню который распечатал. Вот статейка http://www.mirgames.ru/articles/net/gameserver.html

Кто-то: zuko пишет: гет текст ЭТО? 0_о которое майо?))) Ты не представляешь, код для gettext.dll был спёрт с именно ЭТОЙ статьи!!!!

zuko: =)) Статьей не пользовался просто читал для ознакомительных целей) а вот геттекст использывал) Понравилаось) но эт давно было щас не страдаю)

Jin KaZaMa: Теоретически, сервер может быть написан на чем угодно и ГМ сможет с ним спокойно работать в качестве клиента. А вот насчет бесплатных хостингов - это уже вряд ли... хотя смотря для чего...

Ev-genius: Кто-то пишет: А вобще что делает данная "демка"? Каждый шаг просит пхп скрипт записывать своё местоположение и передавать другим? каждую секунду отправляет свои координаты в ответ получает список координат всех игроков. но это чисто пример, там многое не додумано и недоделано, так как я на начальных стадиях начал чувствовать увеличение проблем хттп по экспоненте =( поэтому решил выложить, ну и заодно узнать другие способы zuko пишет: Воо хорошо что я всякий ненужный хлам храню который распечатал. Вот статейка http://www.mirgames.ru/articles/net/gameserver.html глянул, как я понял там используется метод как в контре: сервер как стартует кидает в центр свое местоположение, клиент когда стартует запрашивает у центра адреса серверов. скрипт является только посредником между клиентом и сервером. у мну и центр и он же сервер написан на пхп, тоесть сервер это не ехе прога, а пхп скрипт) но юзать хттп для этого дела это та ещё жесть =) Jin KaZaMa пишет: А вот насчет бесплатных хостингов - это уже вряд ли... хотя смотря для чего... платный хостинг юзать не очень охото, темболее что снача хотелось бы научиться, попробовать, а потом уже делать=( найти бы хост с какимнить языком на котором можно слушать сокеты и работать с ними по своим протоколам, пхп только с хттп работает

zuko: Ev-genius пишет: у мну и центр и он же сервер написан на пхп, тоесть сервер это не ехе прога, а пхп скрипт) но юзать хттп для этого дела это та ещё жесть =) Мне кажется скорость такого сервера высока не будет=) еслиб делал наподобе пошаговой чето...то понимаю) а так мне кажется страдать сильно будет.. Ev-genius пишет: платный хостинг юзать не очень охото, темболее что снача хотелось бы научиться, попробовать, а потом уже делать=( А че поставил бы денвер и тестил бы) а как чето путевое, рабочее будет тогда уже можно и на халявном хосте в инете пробывать.

Ev-genius: zuko пишет: Мне кажется скорость такого сервера высока не будет=) еслиб делал наподобе пошаговой чето...то понимаю) а так мне кажется страдать сильно будет.. будет, если писать сервер не для хттп протокола, юзая юдп ещё =) тпс тоже пойдёт но протокол свой=) выход кстати да, ток для пошагового =( zuko пишет: А че поставил бы денвер и тестил бы) а как чето путевое, рабочее будет тогда уже можно и на халявном хосте в инете пробывать. денвер стоит, но у мну там ток пхп и перл, что есть уже на бесплатных хостингах. с анлимом гораздо проще сразу закидывать на хост и тестить если это только пример =) так как ставить мускул и настраивать его перелазая с денвера на хост мну лень, в этом примере я сразу на хост закидываю и тестирую. кстати никто не пробовал несколько раз конектится к хттп серверу? ну 1 тпс соединение и несколько раз получить отправить сообщения? потому как у меня повторная отправка не пашет без нового тпс А новые тпс создается не на всех машинах, из за этого при появлении данные уходят-приходят и всё, дальше вы играете сами с собой =( хотя у мну пашет... evl2.web44.net/gm/net_gmk.rar этот же пример но gmk с длл там в степе каждый раз создается новое тпс, поидее нуно без него просто читать и писать в сокет кто работал с 39длл гляньте, на сервак просто отсылаются гет запросы, 1 раз отсылаются-принимаются и всё, дальше работает ток у мну на компе, на некоторых других нет.. чтото я с конектом намутил =(

Ev-genius: конкретно: в самом начале игры я конекчусь к серверу sockId = dll39_tcp_connect("evl2.web44.net",80,0); далее отсылаю инфу на него, жду пока придёт инфа с сервера, всё пришло, все игроки пришли.. всё норм тут всё у всех нормально, у всех работает.. теперь таймер отсчитывает когда запускать этап соединения переменная con_go 0-ничего не делать, 1-отправить данные, 2-ждать получения, 3-обработать полученое в первой фазе снова приходится создавать конект (при имеющемся уже) sockId = dll39_tcp_connect("evl2.web44.net",80,0); потом данные должны отправиться и во второй фазе получиться обратно.. в итоге: на тех копах где создается новое тпс соединение данные отправляются и приходят на тех копах где соединение не создается данные не отправились и соответственно не приходят, остаемся во второй фазе и тупо ждём ответа что не есть хорошо. если в Степе убрать повторный конект и юзать первый самый то данные всёравно не приходят на сервер походу или чегото намутил в клиенте или чегото незнаю про сервер =( как в 39dll полностью закрыть тсп соединение? закрытие сокетов непомогает, соединение остается

zuko: скинь исходники лучше php кстати гет текст как мне кажется для таких целей больше подходит) да и попроще)..даже не попроще а вообще кулебяка фанарная) остается только с php работать

Ev-genius: а де этот гет текс моно достать? а то я нашел какуюто дллку но пишут её в систем32 кидать оО пхп если нуно выкину, но там посути вход и апдейт реализован и даже не кейсом а обычными ифами так как это всё всеголишь тестовый пример. кстати... всё ещё мучаюсь с тсп конектами в 39длл, не хочет она их закрывать. если гет текст умеет открывать-закрывать конекты то моно мне её ссылочкой и хелпом, или послать туда де о ней говорят (говорили) =)

Ban Forever: Ev-genius пишет: я прост знаю перл работает с сокетами например, на прослушку и тд. на пхп таког нету. ибо в пхп это нафиг и не нужно Ev-genius пишет: вот можно было бы замутить серверскую часть на перле тогда оставалась бы проблема найти норм хост. угу. удачи. любй хостер тебя выкинет с таким количеством запросов zuko пишет: Мне кажется скорость такого сервера высока не будет=) еслиб делал наподобе пошаговой чето...то понимаю) а так мне кажется страдать сильно будет.. угу Ev-genius пишет: у мну и центр и он же сервер написан на пхп ты хотя бы понимаешь, насколько это содомия? Ev-genius пишет: вот можно было бы замутить серверскую часть на перле тогда оставалась бы проблема найти норм хост. эт только с перлом, но гораздо уверенне ся чувствуешь когда выбор побольше =) практически любой язык программирования имеет модули/библиотеки/функции для работы с сокетами. повторюсь - хостинг под это дело не подойдёт. тем более не подойдёт денвер/апач и прочее: просто потому что при сотне пользователей онлайн у тебя будет 100 запросов в секунду. а это очень немаленькая нагрузка же. плюс, лаг, т.к. это всё проходит через nginx+апач + еще что-нибудь + время отработки скрипта, а при больших нагрузках время будет увеличиваться. тем более, если ты используешь общий мускул. вообще под такие вещи надо писать собственный сервер + собственный хендлер данных, т.е. своя база данных. хотя, если работаешь на выделеннм сервере, то мускул или другие дб тоже подойдёт. но опять же, надо тестировать на нагрузки. если сильно интересует - моя аська у тебя должна быть.

Ev-genius: Ban Forever пишет: угу. удачи. любй хостер тебя выкинет с таким количеством запросов был один вроде, что невыкинет =) Ban Forever пишет: повторюсь - хостинг под это дело не подойдёт. тем более не подойдёт денвер/апач и прочее: просто потому что при сотне пользователей онлайн у тебя будет 100 запросов в секунду. а это очень немаленькая нагрузка же. плюс, лаг, т.к. это всё проходит через nginx+апач + еще что-нибудь + время отработки скрипта, а при больших нагрузках время будет увеличиваться. тем более.................................................................................................................................... Стоп =) я не говорю что я буду делать игрушку на этом всём, я не говорю что буду юзать пхп и хосты для супер мега пупер рпг, стоп=) я делаю только пример, для себя, нагрузка на сервер будет минимальна. где при тесте будет использовано от 2 до 10 машинок. и я хочу чтобы это работало на сервере в сети и было доступно 24часа в сутки.. Спросите зачем мне это? Хочу практически подойти к вопросу, чтобы иметь Практическое представление какие проблемы могут возникнуть, с какой стороны лучше начинать и тд. чтобы конкретно знать что траблы будут там-там-там.. чтобы иметь небольшие но практические представления о структуре сервера и передаваемых данных Но для начала мну нужно без проблемно слать строку на сервер и принимать строку обратно, хотябы каждые 10секунд но сервер для этого примера писать я бы хотел всётаки на пхп (потому что данных минимум и клиентов мало думать о скорости и практичности ненужно тут), если вдруг эта геттекст библиотека работает с серверами на ура. если нет то нужно будет придумать чтото ещё. по большому счёту клиент моно и на шарпе писать, но мну лень глядеть там эти сокеты и функции с либами, поэтому я взял гм (также чтобы всё было быстро и легко)

Ban Forever: Ev-genius пишет: чтобы иметь небольшие но практические представления о структуре сервера и передаваемых данных о структуре какого сервера? Ev-genius пишет: чтобы конкретно знать что траблы будут там-там-там.. а с очень низкой нагрузкой у тебя нигде траблов и не будет, тем более, если ты передачу сделаешь на пхп, ибо в этом случае за саму передачу у тебя будет отвечать не твой сервер, а апач так какой смысл? Ev-genius пишет: был один вроде, что невыкинет =) хостер с суицидальными наклонностями? это интересно)

Ev-genius: Ban Forever пишет: о структуре какого сервера? вообще, это так разминка. ничего глобального требующего скорости и ресурсов небудет Ban Forever пишет: а с очень низкой нагрузкой у тебя нигде траблов и не будет, тем более, если ты передачу сделаешь на пхп, ибо в этом случае за саму передачу у тебя будет отвечать не твой сервер, а апач ну пока проблема есть, правильно ставить конект с сервером и вырубать его после приема, ибо сервер делает это за раз, а гм не может если по тсп пришли байты =( ну а траблы могут быть в архитектуре, так как неимея опыта полюбому можно чтото неучесть, вот чтобы потом не переписывать ф-ции проверки онлайна или не переделывать таблицы бд, хотелось сначала замутить маленький примерчик, глянуть что чаще юзается и почему, где и как обращения можно распределить, на крайняк какие данные критичнее и как их правильнее обрабатывать. следующей идеей является реализация шифровки, пока её нету, текст открыт. мне нуно для начала получать и отправлять строки норм, чтобы работало не только у меня на компе=) как практический пример просто реализовал в виде мини-мини игрушки, на чем и как делать некритично Ban Forever пишет: хостер с суицидальными наклонностями? это интересно) платный хостер открывающий фри аккаунты в свободное от основного время. имеет не оч красивые имена зато разрешает норм. но это не суть важно, пока нужно просто грамотно слать и получать строку, жду что мну скажут по поводу библиотеки геттекст=)

Ban Forever: Ev-genius пишет: а гм не может если по тсп пришли байты =( не очень понимаю в чём тут проблема, ибо с сетевыми хреньками под гм не имел дела никогда, но подозреваю, что там просто держится сессия. в хттп сессий же нет. Ev-genius пишет: правильно ставить конект с сервером и вырубать его после приема открыть сокет - закрыть сокет Ev-genius пишет: проверки онлайна это пинг чтоли?)))) Ev-genius пишет: не переделывать таблицы бд, хотелось сначала замутить маленький примерчик, глянуть что чаще юзается и почему, где и как обращения можно распределить, на крайняк какие данные критичнее и как их правильнее обрабатывать. ты не с того конца заходишь. веб-программирование для таких целей вообще не подходит по сути своей. Ev-genius пишет: платный хостер открывающий фри аккаунты в свободное от основного время. да ты и за деньги такого не получишь. если будет хотя бы 1 запрос в секунду достаточно продолжительное время, то это уже может быть воспринято как ддос

Ev-genius: Ban Forever пишет: открыть сокет - закрыть сокет открываю-закрываю сокеты как написно в хелпе длл, палю активность проги (нет.ехе: Открыто 1 соединение...... 2 ........... 3............4........5....6....7...8...n) нуно чтобы было так: 1 соединение.....0..1..0..1..0..1..0..1..0..1 =) Ban Forever пишет: ты не с того конца заходишь. веб-программирование для таких целей вообще не подходит по сути своей. да мне поидее безразницы подходит или нет. так как другие способы никто предложить неможет, значит буду юзать то что возможно, То что есть на руках в данный момент Ban Forever пишет: да ты и за деньги такого не получишь. если будет хотя бы 1 запрос в секунду достаточно продолжительное время, то это уже может быть воспринято как ддос запросов раз в секунду небудет, раз в 10 секунд, может раз в 20 секунд. в течении 1-2 минут. я же говорю всё есть, у мну работает всё. в течении 4-5минут 3 окошка слали трафик на сервак каждую секунду, хотя достаточно 10-20 секунд будет для примера. ну пусть это будет не игра, пусть это будет чат =) с ехе клиентом =) для 10 человек, безразницы мне бы просто запустить это всё, если в гм не получится С# буду юзать, хотя так нехотелось заморачиваться по мелочам =)

zuko: Ev-genius пишет: а то я нашел какуюто дллку но пишут её в систем32 кидать оО =)) нет в гамаке как с обычной длл работаешь) там 1 процедура помоему открывает хост, любую страницу=возвращает текст с нее Я низнаю как ты пытаешься все замутить че за соединения там) вроди пхп получает пакет и возвращает обработанный текст..какие там соединения и тд и тп я даж незнаю... в место всего вот этого dll39_set_format(sockId,dll39_format_text,chr(13) + chr(10)); dll39_buffer_clear(0);//очистили dll39_write_chars("GET /a.php?i=update&name="+nn+"&xx="+xx+"&yy="+yy+"&dir="+ddir+" HTTP/1.0" + newLine,0);//запрос dll39_write_chars("Host: evl2.web44.net" + newLine,0);//на хост dll39_message_send(sockId,0,0,0);//отправили dll39_buffer_clear(0);//очистили достаточно написать чето типа геттекст(evl2.web44.ne,a.php?i=update&name="+nn+"&xx="+xx+"&yy="+yy+"&dir="+ddir) ну еще все иксы игрики предварительно строками сделать

Ev-genius: zuko пишет: =)) нет в гамаке как с обычной длл работаешь) там 1 процедура помоему так хорошо =) а де мне эту дллку найти? ) а то то что я нашел, как сказал выше, это нето что нуно. потому как в систем32 качается. кто мну эту дллку сможет ссылочкой поделиться? =) хоть я и начал на шарпе делать но для гамака скиньте пожалусто эту дллку zuko пишет: ща сек.. давай, ждю =)

zuko: http://www.zuko.sk6.ru/modules.php?name=Downloads&d_op=getit&lid=4 Вот) сам искал блин) на своей странице нашел) dll39_write_chars("GET /a.php?i=update&name="+nn+"&xx="+xx+"&yy="+yy+"&dir="+ddir+") =) можно даже в игру не лезть)

Ev-genius: zuko пишет: =) можно даже в игру не лезть) угумс никакой проверки там нету, и сервер не проверяет ничего. пример же всеголишь кстати глянул я эту библеотеку, чегото она у меня ничего не шлет и не принимает зависает игрушка и всё =(

zuko: хмм я с помощью нее тебе позицию уток менял

Ev-genius: она у мну даже пример без исправлений не открывает =( просто жму пробел отвечаю на 2 окошка и всё прога виснет. я кажется стормозил просто. файрвол походу не пускает, надо будет в настройках поглядеть я там спалил igmp протокол, а я его вроде блокировал за ненужностью

zuko: Ну ты там разбирайся пока потом если че спрашивай...

Ban Forever: Ev-genius пишет: открываю-закрываю сокеты как написно в хелпе длл, палю активность проги (нет.ехе: Открыто 1 соединение...... 2 ........... 3............4........5....6....7...8...n) вот я тебе гениально простую вещь скажу: значит она не закрывает сокеты) Ev-genius пишет: так как другие способы никто предложить неможет, значит буду юзать то что возможно, То что есть на руках в данный момент да ты как-то и не просил способами поделиться)

Ev-genius: Ban Forever пишет: вот я тебе гениально простую вещь скажу: значит она не закрывает сокеты) угу, поэтому я и спрашивал:Ev-genius пишет: как в 39dll полностью закрыть тсп соединение? закрытие сокетов непомогает, соединение остается Ban Forever пишет: да ты как-то и не просил способами поделиться) Ev-genius пишет: вот хотелось узнать как можно реализовать сервер спрашивал в самом начале =) есть варианты - послушаю =) вобщем: gettext у мну нипашет нигде =( ни на компе с файрволом ни на компе без файрволов =( 39длл конекты незакрывает если будут ещё варианты предлагайте, я пока на шарпе стругаю (данные приходят и уходят, остается только красивая обложка)

Ban Forever: Ev-genius пишет: есть варианты - послушаю =) ты сначала детально объясни, что в итоге ты хочешь) научится передавать данные? так ты уже: Ev-genius пишет: я пока на шарпе стругаю или что? организовывать сервер? ну это только с практикой придёт, я бы мог дать пару советов как оптимизировать всё, но ты вроде к этому не стремишься... или стремишься?

zuko: я уже представляю как бы я это сделал но возиться нехочу пока... с гетекстом



полная версия страницы