Можно ли использовать сокеты в PHP для соединения с сервером игры

GoodLuck777

Новичок
Внезапный вопрос, есть онлайн игра, принимает соединения на определенном IP-PORT, если я через сокет по протоколу TCP соединюсь - как организовать простейший пинг-понг с сервером?

Возможно ли это в принципе?

Т.е. я хочу в реальном времени отправлять пакеты на сервер и получать их оттуда, записывая в лог файл. Могу ли я на PHP это сделать?

Допустим, работа скрипта PHP будет неограниченной.
 

Arramis

Новичок
есть онлайн игра, принимает соединения на определенном IP-PORT, если я через сокет по протоколу TCP соединюсь - как организовать простейший пинг-понг с сервером?.
почему по TCP соединяешься с сервером ? для онлайн игр обычно удобнее по протоколу UDP коннектиться.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Arramis, то есть похрену дойдет ли пакет до сервера в нужном виде?
 

флоппик

promotor fidei
Команда форума
Партнер клуба
c0dex, вообще - обычно да. Подтверждение пакетов TCP может занять больше времени, чем состояние клиента будет актуальным для этого пакета. Поэтому обычно херачат все подряд удп и аппроксимируют пришедшие.
 

MiksIr

miksir@home:~$
c0dex, ну в общем да, часто пофиг. А когда не пофиг - реализуют свои вариант ретрансмита, при этом продолжают принимать данные. С TCP все печальнее.
Другое дело, что советовать так с ходу - это ламерство. Никто не знает, что там у него за "игра". UDP хорош когда реалтайм. В иных случаях - это головная боль ;)
 

Arramis

Новичок
Другое дело, что советовать так с ходу - это ламерство. Никто не знает, что там у него за "игра". UDP хорош когда реалтайм. В иных случаях - это головная боль ;)
ну вот автор же указал что соединение реалтайм, потому и посоветовал UDP - че не нравится ?
 

MiksIr

miksir@home:~$
Не, "я хочу в реальном времени отправлять пакеты" - это вообще ни о чем не говорит. Реалтайм, это когда важны задержки. Вот мультиплеер шутер - это реалтайм. А мультиплеер походовая стратегия - она не реалтайм, хотя пакеты и в реальном времени отправляются ;) Ну возможно я не совсем корректно взял терминологию, но смысл остается - отправка пакетов в реальном времени еще не значит, что нам важен стабильный джиттер. А с UDP имеет смысл связываться или если нам джиттер важен.
 

Arramis

Новичок
Не, "я хочу в реальном времени отправлять пакеты" - это вообще ни о чем не говорит. Реалтайм, это когда важны задержки. Вот мультиплеер шутер - это реалтайм. А мультиплеер походовая стратегия - она не реалтайм, хотя пакеты и в реальном времени отправляются ;) Ну возможно я не совсем корректно взял терминологию, но смысл остается - отправка пакетов в реальном времени еще не значит, что нам важен стабильный джиттер. А с UDP имеет смысл связываться или если нам джиттер важен.
нет, ты правильную терминологию используешь, реалтайм означает интерактивное взаимодействие с другими игроками в котором задержки сведены до минимума - именно это я и подразумевал в первую очередь когда говорил про UDP - потому как они и представляют большой интерес.
 

AnrDaemon

Продвинутый новичок
Arramis, то есть похрену дойдет ли пакет до сервера в нужном виде?
Убери "в нужном виде". UDP пакет всегда дойдёт "в нужном виде", либо не дойдёт вообще. Контрольная сумма то никуда не делась.
Другое дело, что это ещё вопрос тайминга. Например, в Еве разрешение генератора - 1(одна) секунда. За секунду можно ооочень много пакетов переслать.
 

флоппик

promotor fidei
Команда форума
Партнер клуба
AnrDaemon, в УДП он может дойти не в том порядке, в котором отправлен зато.
 

AnrDaemon

Продвинутый новичок
Обычно это значает, что он уже не нужен и будет просто удалён движком из очереди обработки.
 

hell0w0rd

Продвинутый новичок
AnrDaemon, по моему ты путаешь логику приложения с логикой работы протокола. UDP сам по себе не гарантирует вообще ничего о состоянии пактов.
There is no guarantee of delivery, ordering, or duplicate protection
 

AnrDaemon

Продвинутый новичок
AnrDaemon, по моему ты путаешь логику приложения с логикой работы протокола. UDP сам по себе не гарантирует вообще ничего о состоянии пактов.
Я не путаю, я просто расширяю ответ :) Никто не пишет приложения на голом протоколе обмена данными, если только в задачи приложения не входит голый обмен данными.
А любой протокол более высокого уровня неминуемо будет предпринимать необходимые шаги по защите собственной среды от повреждения. Последовательная нумерация пакетов, контрольные суммы, и так далее и тому подобное. Даже Lineage2, работая на TCP, где, казалось бы, доставка и порядок следования пакетов гарантируются, использует независимую нумерацию пакетов.
А по поводу "реального времени", я уже писал это, но повторюсь: реальность времени зависит не от того, насколько быстро вы получили ACK, а от частоты генератора сервера и особенностей протокола связи с сервером.
 

antson

Новичок
Партнер клуба
GoodLuck777, ну сделаешь ты это, как только админы игры это заметят. Забанят ип сервера. Дальше будет вопрос, как мне использовать прокси ?

А если цель благородна, то можно попробывать договорится об апи взаимодействия
 

GoodLuck777

Новичок
Игра: Lineage 2
наверное сразу стоило написать, делается это для получения среза информации, т.е. мне важно зайти на сервер, получить немного информации в виде пакетов по TCP и отключиться. Никаких "ботов" и т.п. не требуется.
 

Hello

Новичок
Игра: Lineage 2
наверное сразу стоило написать, делается это для получения среза информации, т.е. мне важно зайти на сервер, получить немного информации в виде пакетов по TCP и отключиться. Никаких "ботов" и т.п. не требуется.
Да без разницы какая игра. На php без проблем, как и на другом языке.
 

3jIo

Новичок
Я не путаю, я просто расширяю ответ :) Никто не пишет приложения на голом протоколе обмена данными, если только в задачи приложения не входит голый обмен данными.
А любой протокол более высокого уровня неминуемо будет предпринимать необходимые шаги по защите собственной среды от повреждения. Последовательная нумерация пакетов, контрольные суммы, и так далее и тому подобное. Даже Lineage2, работая на TCP, где, казалось бы, доставка и порядок следования пакетов гарантируются, использует независимую нумерацию пакетов.
А по поводу "реального времени", я уже писал это, но повторюсь: реальность времени зависит не от того, насколько быстро вы получили ACK, а от частоты генератора сервера и особенностей протокола связи с сервером.
Вы уверены? Там скорей не нумерация, а индификаторы пакетов. Я как раз дипломную писал на тему Сетевое взаимодействие клиент-сервер. И так получилось что в сетевой движок линейки идеально подходил для моего сервера. (Ну конечно допилил его)
 
Сверху