这一直困扰我一段时间,有人可以告诉我如何ping反击服务器。
我只想ping服务器并查看它是否在线,就是这样。
我在网上发现了很多使用fsock和UDP来做这个的小片段,但是他们都没有真正完成我希望它做的工作。
我发现的大部分内容都是在线显示脱机服务器。
如果有人可以向我提供这些有用的信息(代码),我真的很感激。
提前谢谢^ _ ^
答案 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服务器交谈的示例的文件,
答案 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';