2010-06-13 190 views
0

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

我只想ping服务器,看看它是否处于联机状态,这就是全部。

我发现很多小片段用fsock和UDP要做到这一点,网上但没有人实际上做了,我想它做的工作。

我发现的大多数人都显示离线服务器为在线。

我真的很感激,如果有人能为我提供这个有用的信息(代码)。

预先感谢您的^ _^

回答

0

两个选择,把我的头顶部:

的fsockopen

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

Net_Ping梨包

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

使用CS服务器的IP。

+0

谢谢,第一个链接,我发现了,不过它不会做工作。 第二个链接就像我需要的东西 - 但它需要很多东西,我只有当我有根访问。 它需要的东西在我的服务器上被禁用(即exec()函数)。 – Zubair1 2010-06-14 17:37:54

0

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

这与实例与CS服务器交谈的文件,

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

+0

感谢您的链接 - 代码看起来相当类似看起来相当过时,而不是我感兴趣的。 我不想查询服务器的信息,我只需要ping它只是验证它是在线和活。 http://gameq.sourceforge.net比上面的更好,如果我不得不选择。 – Zubair1 2010-06-14 17:39:53

0

你也可以做什么作为一个TCP平。基本上,您只需连接,然后断开连接,无需任何通信。如果连接成功,则知道服务器已启动,如果失败则服务器关闭。当我说服务器是指你感兴趣的程序,而不是物理服务器。

1

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

反正下面的代码(PHP)可用于检查CS服务器的状态。

`

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

Bah!这个代码块并不真的工作正常! :(

总之,我使用此代码为每天我的服务器,希望它能对你罚款。

0

这里是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';