Avatar billede uso Nybegynder
27. februar 2005 - 20:23 Der er 7 kommentarer og
1 løsning

Ping med php

Davs!

Jeg er ved og sætte en side op til min clan, og jeg vil gerne sætte en lille server status på.

Det skal være et "panel" på www.clan-ne.photoshop-freaks.dk - og det eneste den skal er:

At pinge 81.7.177.41, og hvis den for svar skal den skrive:

Status: Online

Online skal være med grøn

Status: Offline

Offline skal være med rød.

//UsO
Avatar billede coderdk Praktikant
27. februar 2005 - 22:02 #1
Lad mig gætte, skal den checke om en CS-server er i live?
Avatar billede hmortensen Nybegynder
27. februar 2005 - 22:27 #2
Hvis du vil checke om en given service kører, fx. en CS server, kan du gøre sådan her:
<?php
function ServerStatus($host, $port)
{
  $conn = fsockopen($host, $port, $errno, $errstr, 30);
  if (!$conn)
  {
    return "Offline";
  } else {
    fclose($conn);
    return "Online";
  }
}
//Ved ikke hvad port servicen kører på
echo ServerStatus("81.7.177.41", 1234);
?>
Avatar billede coderdk Praktikant
27. februar 2005 - 22:30 #3
Hvis det *er* en CS-server, ville den korrekte løsning være at sende en "ping" besked til CS-serveren, som den kan svare på - Beskeden sendes med UDP, og ser sådan ud: \xFF\xFF\xFF\xFFping\0 hvis serveren er i live svarer den med noget der ligner \xFF\xFF\xFF\xFFj\0 altså $respons[4] == 'j' ;)
Avatar billede coderdk Praktikant
27. februar 2005 - 22:38 #4
F.eks:


    function isAlive( $server, $port )
    {
        if ( $conn = @fsockopen("udp://$server", $port, $ern, $ers, 3) )
        {
            socket_set_timeout($this->loConn,3);
            $return = array();
            fwrite( $conn, "\xFF\xFF\xFF\xFFping\0" );
            do
            {
                $char = fgetc( $conn );
                $return[] = $char;
            } while ( $char != "\0" && !feof( $conn ) );
            fclose( $conn );
            if ( count( $return ) > 4 )
            {
                return ( $return[4] == 'j' );
            }
        }
        return false;
    }
   
    echo "Status: <span style='color: ";
    if ( isAlive( '81.7.177.41', 27001 ) )
    {
        echo "green";
        $state = 'On';
    }
    else
    {
        echo "red";
        $state = 'Off';
    }
    echo "'>" . $state . "line</span>";

:)
Avatar billede uso Nybegynder
28. februar 2005 - 10:48 #5
Ja det er en Ns server :P

Takker mortensen! dit det virker - men uden grøn / rød farve...

Coderdk:

openside("Server Info");
  echo "IP: 81.7.177.41";
    function isAlive( $server, $port )
    {
        if ( $conn = @fsockopen("udp://$server", $port, $ern, $ers, 3) )
        {
            socket_set_timeout($this->loConn,3);
            $return = array();
            fwrite( $conn, "\xFF\xFF\xFF\xFFping\0" );
            do
            {
                $char = fgetc( $conn );
                $return[] = $char;
            } while ( $char != "\0" && !feof( $conn ) );
            fclose( $conn );
            if ( count( $return ) > 4 )
            {
                return ( $return[4] == 'j' );
            }
        }
        return false;
    }
   
    echo "Status: <span style='color: ";
    if ( isAlive( '81.7.177.41', 27017 ) )
    {
        echo "green";
        $state = 'On';
    }
    else
    {
        echo "red";
        $state = 'Off';
    }
    echo "'>" . $state . "line</span>";
closeside();

Virker slet ikke... Men - hvordan ligger jeg farve på i php? ^^
Avatar billede hmortensen Nybegynder
28. februar 2005 - 10:51 #6
Det gør du i html.

if (!$conn)
{
  return '<span color="red">Offline</span>';
} else {
  fclose($conn);
  return '<span color="green">Online</span>';
}
Avatar billede coderdk Praktikant
28. februar 2005 - 11:42 #7
Dette virker:

<?php

    function isAlive( $server, $port )
    {
        if ( $conn = @fsockopen("udp://$server", $port, $ern, $ers, 3) )
        {
            socket_set_timeout( $conn, 3 );
            $return = array();
            fwrite( $conn, "\xFF\xFF\xFF\xFFping\0" );
            do
            {
                $char = fgetc( $conn );
                $return[] = $char;
            } while ( $char != "\0" && !feof( $conn ) );
            fclose( $conn );
            if ( count( $return ) > 4 )
            {
                return ( $return[4] == 'j' );
            }
        }
        return false;
    }
 
    if ( isAlive( '81.7.177.41', 27017 ) )
    {
        echo "Status: <span style='color: green'>Online</span>";
    }
    else
    {
        echo "Status: <span style='color: red'>Offline</span>";
    }

?>
Avatar billede uso Nybegynder
28. februar 2005 - 13:49 #8
Tak coder - den sidste virker ^^
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester