2010-06-13 117 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';