Pinging CS-серверы - PullRequest
       6

Pinging CS-серверы

0 голосов
/ 13 июня 2010

Это беспокоило меня некоторое время, может кто-нибудь показать мне, как пинговать сервер Counter Strike.

Я просто хочу пинговать сервер и посмотреть, подключен ли он, вот и все.

Я нашел много небольших фрагментов в сети, которые использовали для этого fsock и UDP, но ни один из них на самом деле не выполнил ту работу, которую я хотел.

Большинство из найденных мной серверов показывали автономные серверы как онлайн.

Я был бы очень признателен, если бы кто-нибудь смог предоставить мне эту полезную информацию (код).

Заранее спасибо ^ _ ^

Ответы [ 5 ]

1 голос
/ 14 июня 2011

вы не можете просто пропинговать сервер, так как он использует UDP вместо обычного TCP, поэтому для проверки его состояния вам нужно «запросить» сервер, вы можете найти информацию о том, какую команду вы можете отправить на серверы CS здесь: http://developer.valvesoftware.com/wiki/Server_queries#A2A_PING

В любом случае для проверки состояния сервера CS можно использовать следующий код (PHP).

`

` $ socket = socket_create (AF_INET, SOCK_DGRAM, SOL_UDP);
socket_connect ($ socket, "cs.somesv.com", 27015);

    socket_write($socket, "\xFF\xFF\xFF\xFF\x69");

    if (@socket_read($socket, 5) == "\xFF\xFF\xFF\xFF\x6A") {
        echo '<FONT COLOR=lime>Online</FONT>';
    } else {
        echo '<FONT COLOR=red>Offline</FONT>';
    }

    socket_close($socket);
?>`

Бах!этот блок кода не очень хорошо работает!: (

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

0 голосов
/ 15 июня 2014

Вот функция PHP, чтобы проверить, подключен ли сервер CS:

function isCsServerOnline($server, $port = 27015)
{
    $socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);

    // timeout 1.5 seconds
    $timeout = array('sec' => 1, 'usec' => 500000);
    socket_set_option($socket, SOL_SOCKET, SO_SNDTIMEO, $timeout);
    socket_set_option($socket, SOL_SOCKET, SO_RCVTIMEO, $timeout);

    @socket_connect($socket, $server, $port);
    @socket_write($socket, "\xFF\xFF\xFF\xFF\x69");

    $isOnline = @socket_read($socket, 5) == "\xFF\xFF\xFF\xFF\x6A";
    @socket_close($socket);

    return $isOnline;
}

Вы можете использовать его следующим образом:

$server = 'some.cs.server';
$port = 27015;

$isOnline = isCsServerOnline($server, $port);
echo $isOnline ? 'Online' : 'Offline';
0 голосов
/ 13 июня 2010

Получите ClanManager и у него есть модули для проверки состояния сервера CS.

Это файл с примерами общения с серверами CS,

http://clanmanager.cvs.sourceforge.net/viewvc/clanmanager/ocm/server/counterstrike.inc?revision=1.3&view=markup

0 голосов
/ 22 июня 2010

Вы также можете сделать так называемый TCP-пинг.По сути, вы просто подключаетесь, а затем отключаетесь без какой-либо связи.Если соединение установлено успешно, вы знаете, что сервер работает, а если он не работает, он не работает.Когда я говорю «сервер», я имею в виду интересующую вас программу, а не физический сервер.

0 голосов
/ 13 июня 2010

Два варианта с макушки моей головы:

fsockopen

http://www.phptoys.com/e107_plugins/content/content.php?content.41

Пакет Net_Ping Pear :

http://www.codediesel.com/php/ping-a-server-using-php/

Использование IP сервера CS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...