NFSU:Мониторинг через PHP — различия между версиями

Материал из WikiServia
Перейти к: навигация, поиск
(Новая страница: «Алгоритм прост. При соединении с сервером NFSU на порт 10980 выдается строка вида: <nowiki>usercount|ro…»)
 
(скрипт мониторинга)
 
Строка 9: Строка 9:
 
Собственно, надо эту строку разложить на переменные, и получим нужный результат.  
 
Собственно, надо эту строку разложить на переменные, и получим нужный результат.  
  
 
+
Простейший пример вывода исходных данных на PHP:
Простейший пример вывода на PHP:
+
 
  <?php  
 
  <?php  
error_reporting (E_ALL);
 
 
   
 
   
  $service_port = 10980;  
+
  $address = '87.228.3.174';
  $address = gethostbyname (|’ip|’);  
+
  $port = 10980;  
 
   
 
   
  $socket = socket_create (AF_INET, SOCK_STREAM, 0);  
+
  echo get_nfsu_data($address, $port);
 
   
 
   
$result = socket_connect ($socket, $address, $service_port);
 
 
   
 
   
  while ($out = socket_read($socket, 6048)) {  
+
  function get_nfsu_data($address, $port)
echo $out;  
+
{
}
+
$output = '';
 
   
 
   
  socket_close ($socket);  
+
if ( ($socket = socket_create(AF_INET, SOCK_STREAM, 0)) && socket_connect($socket, $address, $port) )
  ?>
+
{
 +
while ($tmp = socket_read($socket, 4024))
 +
$output .= $tmp;
 +
   
 +
socket_close ($socket);
 +
}
 +
return $output;
 +
  }
 +
 
  
  

Текущая версия на 20:05, 2 июля 2013

Алгоритм прост. При соединении с сервером NFSU на порт 10980 выдается строка вида:

usercount|roomcount|timeonlineinseconds|platform|version|servername~~~A.LAN|0|[]B.LAN|0|[]C.LAN|0|[]D.LAN|0|[HarpyWar|]E.LAN|1|[|]F.LAN|0|[]G.LAN|0|[]H.LAN|0|[]


Где A.LAN|0|[]B.LAN|0| ... - названия комнат, и кол-ва народу в каждой, а в скобках [] ники игроков, разделяемые символом |

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

Простейший пример вывода исходных данных на PHP:

<?php 

$address = '87.228.3.174';
$port = 10980; 

echo get_nfsu_data($address, $port);


function get_nfsu_data($address, $port)
{
	$output = ;

	if ( ($socket = socket_create(AF_INET, SOCK_STREAM, 0)) && socket_connect($socket, $address, $port) )
	{
		while ($tmp = socket_read($socket, 4024))
			$output .= $tmp; 

		socket_close ($socket); 
	}
	return $output;
}


Скачать готовый скрипт на PHP #1

Скачать готовый скрипт на PHP #2