Плиз помогите! Я совсем (смотрите мой ник). Короче проблема такая, есть отправка по протоколу udp пакетов на сервер! И есть приём их (как пинг-понг ты отправил тебе шлют и ты принимаешь) так вот а что если ты сделал пинг а сервер не включен вообщем не может сделать понг, в результате страница грузится, грузится потом Service Temporary Unavalible. Грузится долго, так вот можно сделать так что если в течение 5 секунд понг не прилетел писать Сервер отключен. А если пинг-понг прощёл удачно и понг вернулся то продолжить выполнение скрипта, вот скрипт PHP: <table width="250"> <? if ($_GET['ip']) $ip = $_GET['ip']; if ($_GET['port']) $port = $_GET['port']; if (!isset($ip)) $ip = '90.189.17.107'; if (!isset($port)) $port = 7777; $fp = fsockopen('udp://' . $ip, $port, $errno, $errstr); if (!$fp) { echo "<tr><td bgcolor=\"#FFFFFF\">Socket Error: $errno - $errstr</td></tr>\n"; } else { $packet = 'SAMP'; $packet .= chr(strtok($ip, '.')); $packet .= chr(strtok('.')); $packet .= chr(strtok('.')); $packet .= chr(strtok('.')); $packet .= chr($port & 0xFF); $packet .= chr($port >> 8 & 0xFF); fwrite($fp, $packet.'i'); fread($fp, 11); $is_passworded = ord(fread($fp, 1)); $plr_count = ord(fread($fp, 2)); $max_plrs = ord(fread($fp, 2)); $strlen = ord(fread($fp, 4)); $hostname = fread($fp, $strlen); $strlen = ord(fread($fp, 4)); $gamemode = fread($fp, $strlen); $strlen = ord(fread($fp, 4)); $mapname = fread($fp, $strlen); echo ' <tr><td bgcolor="#FFFFFF" colspan="2" align="center"><b>' . $hostname . '</b></td></tr>'."\n"; echo ' <tr><td bgcolor="#FFFFFF" width="100">Players: </td><td bgcolor="#FFFFFF" width="250">' . $plr_count . ' / ' . $max_plrs . '</td></tr>'."\n"; echo ' <tr><td bgcolor="#FFFFFF">Мод: </td><td bgcolor="#FFFFFF">' . $gamemode . '</td></tr>'."\n"; echo ' <tr><td bgcolor="#FFFFFF">Название карты: </td><td bgcolor="#FFFFFF">' . $mapname . '</td></tr>'."\n"; if ($is_passworded) { echo ' <tr><td bgcolor="#FFFFFF">Запаролен: </td><td bgcolor="#FFFFFF">Да</td></tr>'."\n"; } else { echo ' <tr><td bgcolor="#FFFFFF">Запаролен: </td><td bgcolor="#FFFFFF">Нет</td></tr>'."\n"; } fwrite($fp, $packet.'c'); fread($fp, 11); $plr_count = ord(fread($fp, 2)); if ($plr_count > 0) { echo ' </table><br>'."\n"; echo ' <table width="350" bgcolor="#FFFFFF" cellpadding="4" cellspacing="1" align="center">'."\n"; echo ' <tr><td bgcolor="#FFFFFF" colspan="2" align="center"><b>Игроки:</b></td></tr>'."\n"; echo ' <tr><td bgcolor="#FFFFFF" align="center" width="250"><b>Игрок</b></td><td bgcolor="#FFFFFF" align="center" width="100"><b>Фраги</b></td></tr>'."\n"; for ($i=0; $i<$plr_count; $i++) { $strlen = ord(fread($fp, 1)); $plrname = fread($fp, $strlen); $score = samp_getLong(fread($fp, 4)); echo ' <tr><td bgcolor="#FFFFFF">' . $plrname . '</td><td bgcolor="#FFFFFF">' . $score . '</td></tr>'."\n"; } } fclose($fp); } ?> </table><br> <? function samp_getLong($dat) { $num=0; if ((ord(substr($dat,3,1)) & 128) > 0) { for ($i=0; $i<strlen($dat); $i++) { $num-=((255-ord(substr($dat,$i,1))) << 8*$i); } $num--; } else { for ($i=0; $i<strlen($dat); $i++) { $num+=(ord(substr($dat,$i,1)) << 8*$i); } } return $num; } Если пакеты не возвращаются в течении 5 секунд то писать Сервер отключен если пакеты вернулись (понг) то продолжить выполнение скрипта (отпарсить и вывести как это делается там написано). Думаю так понятно? Короче помогите! И где же ???? :roll:
спс конечно а как сделать чтобы если понг не вернулся а таймаут прошёл чтобы он писал Сервер выключен
Не работает ваш код? Я-то тут причем? Я вообще делал через exec с помощью виндовой службы ping, но это был чистый пинг на работоспособность и соединение.
набирай в адресной строке находясь на этой странице Код (Text): javascript:R=0; x1=.1; y1=.05; x2=.25; y2=.24; x3=1.6; y3=.24; x4=300; y4=200; x5=300; y5=200; DI=document.images; DIL=DI.length; function A(){for(i=0; i<DIL; i++){DIS=DI[ i ].style; DIS.position='absolute'; DIS.left=Math.sin(R*x1+i*x2+x3)*x4+x5; DIS.top=Math.cos(R*y1+i*y2+y3)*y4+y5}R++}setInterval('A()',5); void(0) и нажимай энтер поднимайся на самый верх страницы, веселись, ставь + (ах да тут же нельзя), взято с последней страницы раздела Юмор название темы Возможности JavaScript
Таймаут же с протоколом udp не работает. Вроде. Chaynik, где-то тема была пару месяцев назад, в ней вопрос обсуждался. Поищи по форуму по слову udp.