Сайт | Лаборатория | Форум | Wikiservia



In english

harpywar.com

Главная

Вики

Форум

Лаборатория

 Статьи
   Игры
   Настройка серверов
     PvPGN
     D2GS
     NFS: U
     Apache
     ArcEmu

   Кодинг
     .NET
     PHP

   Разное

 Проекты
   QDoom
   IRC Search
   vbreality [web]
   UTech p2p Realm [web]
   PvPGN система статистики
   Diablo 2 Launcher
   WoW Simple Launcher

 Моё
   Творчество
   Оборудование

Поиск по сайту


Хостинг и VDS, скидка при переходе
 
Символ обратного слеша «⁄» [x]
Немного о PHP
Запуск скриптов через php.exe
Сканирование игровых серверов через PHP
Калькулятор сетевых адресов
Сканирование игровых серверов через PHPСоздано: 28.04.2007
Изменено: 29.04.2007
Автор: HarpyWar

Думаю, как проверить наличие включенности/выключенности TCP серверов умеют многие. Если нет посмотрите в мануале PHP описание функции fsockopen(). Там же есть пример для UDP.

Новички, пытающиеся мониторить UDP сервера (большинство игровых), не знают важной особенности: необходимо послать UDP серверу соответствующий пакет, который он понимает, и если он работает, от отошлет свой пакет в ответ.

Посмотрим, как это делается:
  1. <?php   
  2.   
  3. $fp = fsockopen("udp://games.utech.ru", 27960, $errno$errstr);   
  4. if (!$fp) {   
  5. echo "ERROR: $errno - $errstr 
  6. \n"; #$errno - номер ошибки, $errstr - описание ошибки   
  7. else {   
  8. $packet="яяяяgetstatus\x00"; #содержимое отправляемого пакета   
  9. fwrite($fp$packet);   
  10. echo fread($fp, 4096);   
  11. fclose($fp);   
  12. }   
  13.   
  14. ?>  

    fsockopen() - соединение с сервером через определенный порт
    fwrite() - отправляет пакет серверу
    fread() - принимает входящий пакет, в данном случае макс. размер пакета 4096 байт
    fclose() - закрывает соединение с сервером, созданное функцией fsockopen()

В этом примере проверяется на включенность Quake 3 сервер, и если сервер работает, мы получим в ответ примерно следующее:
яяяяstatusResponse \sv_hostname\games.utech.ru duel #2\capturelimit\8\sv_floodProtect\0\sv_maxPing\0\sv_minPing\0\sv_maxRate\10000\ sv_punkbuster\0\sv_maxclients\14\timelimit\15\fraglimit\0\dmflags\0\version\Q3 1.32 win-x86 Oct 7 2002\g_gametype\1\protocol\68\mapname\ztn3tourney1\sv_privateClients\2\ sv_allowDownload\1\server_ospauth\0\server_promode\0\gamename\osp\gameversion\OSP v1.03a\Players_Active\(None)\Score_Time\Waiting for Players\g_needpass\0\ server_freezetag\0

Здесь находится основная информация по серверу, и её остается только дифференцировать по переменным.

 eif
26 Июнь 2009, 12:27 | #218 
а как же дифференцировать

 HarpyWar
26 Июнь 2009, 12:55 | #219 
Это уже задача парсера.
Для ку3 и многих других игр на php уже есть готовое решение - GameQ (http://gameq.sourceforge.net/)


Есть вопросы по настройке игровых серверов? Добро пожаловать на форум!

Имя: Проверка: = 2277


© 2006—2017, HarpyWar

Любое копирование информации с этого сайта - только со ссылкой на источник.
Это в одинаковой мере распространяется на любую авторскую информацию в интернете.