Ping CS服务器

时间:2010-06-13 05:20:10

标签: php udp

这一直困扰我一段时间,有人可以告诉我如何ping反击服务器。

我只想ping服务器并查看它是否在线,就是这样。

我在网上发现了很多使用fsock和UDP来做这个的小片段,但是他们都没有真正完成我希望它做的工作。

我发现的大部分内容都是在线显示脱机服务器。

如果有人可以向我提供这些有用的信息(代码),我真的很感激。

提前谢谢^ _ ^

5 个答案:

答案 0 :(得分:1)

你不能只是ping服务器,因为它使用UDP而不是普通的TCP,所以为了检查它的状态,你需要“查询”服务器,你可以找到有关你可以发送到CS服务器的命令的信息:http://developer.valvesoftware.com/wiki/Server_queries#A2A_PING

无论如何,以下代码(PHP)可用于检查CS服务器状态。

`

`         $ 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);
?>`

呸!这段代码块真的没用! :(

无论如何,我每天都会为我的服务器使用这段代码,希望它对你有用。

答案 1 :(得分:0)

我的两个选择:

<强>的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/

使用CS服务器的IP。

答案 2 :(得分:0)

获取ClanManager,它有模块来检查CS服务器的状态。

这是带有与CS服务器交谈的示例的文件,

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

答案 3 :(得分:0)

您还可以执行所谓的TCP ping。基本上,你只需连接然后断开连接,无需任何通信。如果连接成功,则表示服务器已启动,如果连接失败,则说服务器已关闭。当我说服务器时,我指的是你感兴趣的程序,而不是物理服务器。

答案 4 :(得分:0)

这是用于检查CS服务器是否在线的PHP函数:

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';