• Login
  • Register
  • Zoek
This Thread
  • Everywhere
  • This Thread
  • This Forum
  • Articles
  • Pages
  • Forum
  • Filebase Entry
  • More Options

ICTscripters

Dé plek voor IT

Dé plek voor IT

Login

Geavanceerde opties
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
  3. ICT Nieuws
  4. Blog
  5. Marktplaats
    1. Werk
    2. Advertenties
    3. Domeinnamen
    4. Websites
    5. Design & lay-outs
    6. Scripts
    7. Overige
  6. Design
  7. Leden
    1. Actieve bezoekers
    2. Team
    3. Leden zoeken
  8. Downloads
  9. Goedkope domeinnamen
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
  3. ICT Nieuws
  4. Blog
  5. Marktplaats
    1. Werk
    2. Advertenties
    3. Domeinnamen
    4. Websites
    5. Design & lay-outs
    6. Scripts
    7. Overige
  6. Design
  7. Leden
    1. Actieve bezoekers
    2. Team
    3. Leden zoeken
  8. Downloads
  9. Goedkope domeinnamen
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
  3. ICT Nieuws
  4. Blog
  5. Marktplaats
    1. Werk
    2. Advertenties
    3. Domeinnamen
    4. Websites
    5. Design & lay-outs
    6. Scripts
    7. Overige
  6. Design
  7. Leden
    1. Actieve bezoekers
    2. Team
    3. Leden zoeken
  8. Downloads
  9. Goedkope domeinnamen
  1. Dé plek voor IT - ICTscripters
  2. Forum
  3. Scripting & programmeren
  4. PHP + SQL

Forum

  • Na 15 jaar terug van weggeweest: iCriminals.nl is terug (BETA)!

    Syntax 19 januari 2026 om 09:34
  • Developer Gezocht

    Mikevdk 10 januari 2026 om 18:57
  • Op zoek naar de legends

    Syntax 5 januari 2026 om 13:50
  • [FREE] WeFact Hosting module

    Jeroen.G 13 oktober 2025 om 14:09
  • Help testers nodig voor android app Urgent

    urgentotservices 26 september 2025 om 10:21
  • Versio vervanger

    Jeroen.G 25 augustus 2025 om 15:56
  • Afspraken systeem met planbeperking

    Lijno 1 augustus 2025 om 23:04
  • Partner Gezocht om meerdere NFT Collecties op Open Sea te Plaatsen

    NFT Art Designer 1 maart 2025 om 14:08

Marktplaats

  • Verschillende domeinen

    Syntax 8 februari 2026 om 09:57
  • 350 Nieuwe Domeinnamen Januari 2026

    shiga 1 februari 2026 om 14:21
  • 321 Nieuwe Domeinnamen December 2025

    shiga 1 januari 2026 om 10:26

Server statistieken opvragen

  • r-mulder
  • 4 september 2012 om 11:50
  • r-mulder
    Elite Member
    Berichten
    968
    • 4 september 2012 om 11:50
    • #1

    Beste mensen,

    Ten eerste nog een hele goeie morgen :P

    Ik heb een vraag,, we kennen allemaal wel het "pingen" van een adres of poort zoals bijvoorbeeld http (80)

    Nu zit ik echter met een kleine probleem, ik heb een paar Call of Duty 4 servers draaien maar hoe kan ik die server status opvragen / laten pingen.

    Het gaat mij er voornamelijk om dat je op de website kan zien: Server 1 Online / offline, Server 2 online / offline, online in het groen en offline uiteraard in het rood.

    Mocht er iemand zijn die me ook kan vertellen dat je de volgende gegevens er allemaal uittrekt dat zal ook mooi meegenomen zijn:

    Server ip: xxx.xxx.xxx.xxx

    Players : 5/20

    Punkbuster: ja/nee.

    Is er iemand die dit weet of dit eventueel zo kan maken ? :rolleyes:

    Met vriendelijke groet,

    Ramon.


    P.S: Heb heel wat op Google rond gezocht en daar wordt men niet wijzer van :P


    EDIT: Hier een voorbeeld van hoe ik het graag wou hebben.. http://portal.novacrew.eu/servers.php

    Postcounter: 100 - 200 - 300 - 400 - 500 - 600 - 700 - 800 - 900 - 1000

  • Guest, wil je besparen op je domeinnamen? (ad)
  • WHMCSAddons
    Master
    Ontvangen Reacties
    88
    Berichten
    2.411
    • 4 september 2012 om 12:06
    • #2

    http://www.darian-brown.com/php-ping-scrip…ver-or-website/

    Eerste resultaat die ik tegen kwam.

  • r-mulder
    Elite Member
    Berichten
    968
    • 4 september 2012 om 12:21
    • #3

    Dat heb ik idd ook gevonden maar het werkt helemaal niet of niet na toebehoren..

    Postcounter: 100 - 200 - 300 - 400 - 500 - 600 - 700 - 800 - 900 - 1000

  • WHMCSAddons
    Master
    Ontvangen Reacties
    88
    Berichten
    2.411
    • 4 september 2012 om 12:24
    • #4

    Foutmeldingen?
    Graag iets meer informatie zodat we er ook iets mee kunnen, wellicht is het voor andere mensen ook interessant namelijk.

  • r-mulder
    Elite Member
    Berichten
    968
    • 4 september 2012 om 12:37
    • #5

    Omdat ik er inmiddels al achter ben dat het helaas niet zo gaat werken als poort 80 scannen :P

    Postcounter: 100 - 200 - 300 - 400 - 500 - 600 - 700 - 800 - 900 - 1000

  • Tim
    Enlightened
    Ontvangen Reacties
    77
    Berichten
    3.686
    • 4 september 2012 om 12:42
    • #6

    http://www.phphulp.nl/php/script/ove…atsversie2/947/

    Bedank me later maar haha.

    Master student IT-recht en Master student Ondernemingsrecht & software ingenieur
    My Personal profile
    My professional profile (LinkedIn/CV)

  • r-mulder
    Elite Member
    Berichten
    968
    • 4 september 2012 om 13:14
    • #7
    PHP
    <?php
    /**
    *
    * Serverstatus class
    *
    * Tested and working in PHP5, PHP6
    * Only tested with Call of Duty serie.
    * Connects to a server an retrieves the data.
    *
    * @throws ServerException
    *
    * Known bugs:
    *  - Sometimes (random) the server returns 'disconnect' as data.
    *    Then the script just dies for unknown reasons (???)*
    *
    * Version 2.0
    *   Class implementation
    *
    *   CHANGELOG
    *     1.0      - 5 May 2004
    *                Made by =(.T.T.B.)= Spikey (http://www.phphulp.nl/php/scripts/7/145/)
    *     1.1, 1.2 - 13 May 2004
    *                http://www.phphulp.nl/php/scripts/7/146/
    *     2.0      - 1 March 2008
    *                Class implementation. Totally rewritten 1.2 version.
    *                http://www.phphulp.nl/php/scripts/7/1293/
    *
    *                       Mark van Seventer
    *
    */
    class ServerException extends Exception { }
    class ServerStatus {
        /* Server address */
        private $ip;
        private $port;
        /* Server data */
        private $cvar   = array();
        private $player = array();
        private $score  = array();
        private $ping   = array();
        /**
        * Constructor, saves IP and port
        * Note that the IP does not has to be syntaxed as
        * XXX.XXX.XXX.XXX. A host can also be entered.
        *
        * @param String $ip
        * @param String $port
        * @param boolean $autoConnect
        */
        public function __construct($ip = '5.45.182.200', $port = '28960', $autoConnect = true) {
            if(!isset($ip)) {
                throw new ServerException('IP cannot be left empty!');
            }
            $this->ip   = $ip;
            $this->port = $port;
            if($autoConnect) {
                $this->connect();
            }
        }
        /**
        * Connects to server
        */
        public function connect() {
            if(!empty($this->player)) {
                throw new ServerException('No need to connect to the same server twice!');
            }
            $con = fsockopen('udp://' . $this->ip, $this->port);
            if(!$con) {
                throw new ServerException('Failed connecting to the server!');
            }
            fwrite($con, chr(255) . chr(255) . chr(255) . chr(255) . chr(0x02) . 'getstatus' . chr(0x00));
            fread($con, 4);
            $status = socket_get_status($con);
            if($status['unread_bytes'] == 0) {
                throw new ServerException('Failed retrieving data from the server!');
            }
            $data = fread($con, $status['unread_bytes']);
            //do {
            //    $data .= fread($con, 1); 
            //    $status = socket_get_status($con);
            //} 
            //while($status['unread_bytes'] != 0);
            fclose($con);
            $this->_handle($data);
        }
        /**
        * Handles retrieved data
        * @param String $data
        */
        private function _handle($data) {
            if($data == 'disconnect') {
                throw new ServerException('Unknown error retrieving data!');
            }
            $playerData = explode("\n", $data);
            /* Remove unnecessary items */
            array_shift($playerData);//statusResponse
            array_pop($playerData);//empty
            $cvars = array_shift($playerData);
            $cvars = explode('\\', $cvars);
            array_shift($cvars);//empty
            $this->_parseCvar($cvars);
            $this->_parsePlayer($playerData);
        }
        /**
        * Parses cvars
        * @param Array $cvar
        */
        private function _parseCvar($cvar) {
            /**
            * We want to achieve an array with:
            * $cvar => $cvar-value
            */
            $cvarCount = count($cvar);
            for($i = 0; $i < $cvarCount; $i++) {
                $cvarValueIndex = $i + 1;
                $this->cvar[$cvar[$i]] = $this->_colorize($cvar[$cvarValueIndex]);
                $i += 1;//skip cvarvalue
            }
        }
        /**
        * Parses player information
        * @param Array $player
        */
        private function _parsePlayer($players) {
            $regex = '#([0-9]+) ([0-9]+) "(.*)"#';
            foreach($players as $player) {
                preg_match($regex, $player, $info);
                $this->score[]  = $info[1];
                $this->ping[]   = $info[2];
                $this->player[] = $info[3];
            }
            /* Sort players */
            array_multisort($this->score, SORT_DESC, SORT_NUMERIC,
                            $this->ping,  SORT_ASC,  SORT_NUMERIC,
                            $this->player);
            /* Colorize after sort to avoid sorting on <span> */
            $this->player = array_map(array($this, '_colorize'), $this->player);
        }
        /**
        * Colorizes according to Call of Duty format
        * @param String $string
        * @return String $string
        */
        private function _colorize($string) {
            $string = htmlentities($string);
            $colorcodes = array(
                '^1' => '</span><span style="color: red">',
                '^2' => '</span><span style="color: green">',
                '^3' => '</span><span style="color: yellow">',
                '^4' => '</span><span style="color: blue">',
                '^5' => '</span><span style="color: cyan">',
                '^6' => '</span><span style="color: purple">',
                '^7' => '</span><span style="color: #CCC">',//white is unreadable
                '^8' => '</span><span style="color: black">',//team color
                '^9' => '</span><span style="color: gray">',
                '^0' => '</span><span style="color: black">',
            );
            $string = str_replace(array_keys($colorcodes), $colorcodes, $string);
            /* Fix the </span> in the beginning and add one at the end */
            $pos = strpos($string, '</span>');
            if($pos !== false) {
                $length = strlen('</span>');
                $string = substr($string, 0, $pos) . substr($string, $pos + $length);//remove first </span>
                $string .= '</span>';//add trailing </span>
            }
            
            return $string;
        }
        /**
        * Allow access to private variables
        * @param String $var
        * @return String private $var
        */
        public function __get($var) {
            return isset($this->$var) ? $this->$var : false;
        }
    }
    ?> 
    <?php
    try {
        $status = new ServerStatus('5.45.182.200', '28960', false);
        $status->connect();//optional
        /**
        * The above is the same as
        * $status = new ServerStatus('5.45.182.200');
        */
        /* EXAMPLE */
        echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">' . "\n" .
             '<html xmlns="http://www.w3.org/1999/xhtml">' . "\n" .
             '<head>' . "\n" .
             '<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />' . "\n" .
             '<title>Agirre ServerStatus</title>' . "\n" .
             '</head>' . "\n" .
             '<body>' . "\n";
        /* EXAMPLE: printing example header */
        echo '<p style="font-weight: bold">Server status: ' . $status->ip . ':' . $status->port . '</p>' . "\n";
        /* EXAMPLE: printing cvars */
        echo '<table>' . "\n" .
             '  <tr>' . "\n" .
             '    <td style="font-style: italic">Cvar</td>' . "\n" .
             '    <td style="font-style: italic">Value</td>' . "\n" .
             '  </tr>' . "\n";
        foreach($status->cvar as $cvar => $value) {
            echo '  <tr>' . "\n" .
                 '    <td>' . $cvar . '</td>' . "\n" .
                 '    <td>' . $value . '</td>' . "\n" .
                 '  </tr>' . "\n";
        }
        echo '</table>' . "\n";
        /* EXAMPLE: printing player table */
        echo '<table>' . "\n" .
             '  <tr>' . "\n" .
             '    <td style="font-style: italic">Player</td>' . "\n" .
             '    <td style="font-style: italic">Score</td>' . "\n" .
             '    <td style="font-style: italic">Ping</td>' . "\n" .
             '  </tr>' .  "\n";
        $playerCount = count($status->player);
        for($i = 0; $i < $playerCount; $i++) {
            echo '  <tr>' . "\n" .
                 '    <td>' . $status->player[$i] . '</td>' . "\n" .
                 '    <td>' . $status->score[$i] . '</td>' . "\n" .
                 '    <td>' . $status->ping[$i] . '</td>' . "\n" .
                 '  </tr>' .  "\n";
        }
        echo '</table>' . "\n";
        echo '</body>' . "\n" . '</html>';
    }
    catch(ServerException $e) {
        echo 'Error: ' . $e->getMessage();
    }
    ?>
    Toon Meer


    Krijg melding: Error: Failed retrieving data from the server!

    Server is wel traceerbaar want Gametracker vind hem ook..

    Postcounter: 100 - 200 - 300 - 400 - 500 - 600 - 700 - 800 - 900 - 1000

  • Tim
    Enlightened
    Ontvangen Reacties
    77
    Berichten
    3.686
    • 4 september 2012 om 13:18
    • #8

    Misschien moet je script iets aanpassen:
    http://www.php.net/manual/en/func…t-meta-data.php
    Zegt dat die unread-bytes moet negeren. Doe dat mogelijk hier dan ook. Verder, goede port en IP ingesteld?

    Master student IT-recht en Master student Ondernemingsrecht & software ingenieur
    My Personal profile
    My professional profile (LinkedIn/CV)

  • r-mulder
    Elite Member
    Berichten
    968
    • 4 september 2012 om 13:20
    • #9

    Als ik dat zo lees gaan we de webserver kant weer op ? :P
    Ip en poort kloppen uiteraard.. dubbel nagekeken :thumbup:

    Postcounter: 100 - 200 - 300 - 400 - 500 - 600 - 700 - 800 - 900 - 1000

  • K.Rens
    Eigenaar
    Ontvangen Reacties
    241
    Berichten
    4.473
    Filebase Entries
    2
    • 4 september 2012 om 13:38
    • #10

    De site waarnaar je linkt gebruikt gewoon http://www.gametracker.com hun systeem om te meten.
    Wat je wil is dus hun systeem wat namaken.

    Wat je kan doen is je bovenstaande code debuggen.
    Je catcht immers de echte foutmeldingen vervangt deze.
    Vervang anders
    fsockopen('udp://' . $this->ip, $this->port);
    door:
    echo fsockopen('udp://' . $this->ip, $this->port);
    En kijk wat hij zegt, waarom hij niet kan verbinden.
    Misschien is de udp port geblokkeerd ofzo.

  • r-mulder
    Elite Member
    Berichten
    968
    • 4 september 2012 om 14:10
    • #11

    Wat ik bedoel is zoiets als:


    PHP
    <?php 
     
    $host = '5.45.182.200';  
    $port = 28960; 
    $waitTimeoutInSeconds = 1;  
    if($fp = @fsockopen($host,$port,$errCode,$errStr,$waitTimeoutInSeconds)){    
       // It worked 
    echo "<font color='green'>Online</font>";   
    } else { 
       // It didn't work  
    echo "<font color='red'>Offline</font>" ;  
    } 
    
    
    ?>
    Toon Meer

    Als ik dat heb staan krijg ik de melding:

    Warning: fsockopen() [function.fsockopen]: unable to connect to 5.45.182.200:28960 (Connection timed out) in /home/ramonqd51/domains/grunnserver.tk/public_html/test3.php on line 6
    Offline
    Als ik hem instel op de webserver werkt het wel..

    Postcounter: 100 - 200 - 300 - 400 - 500 - 600 - 700 - 800 - 900 - 1000

  • Tim
    Enlightened
    Ontvangen Reacties
    77
    Berichten
    3.686
    • 4 september 2012 om 15:57
    • #12

    Firewall?

    Master student IT-recht en Master student Ondernemingsrecht & software ingenieur
    My Personal profile
    My professional profile (LinkedIn/CV)

  • r-mulder
    Elite Member
    Berichten
    968
    • 4 september 2012 om 16:04
    • #13

    Zoals al eerder aangegeven Gametracker scant hem wel :)
    Ip en poort kloppen.. Firewall laat hem door, als firewall uitstaat werkt het ook niet..

    Het werkt wel op me webserver maar verder ook niet.

    Wil gewoon kunnen zien dat me gameserver online of offline is.

    Postcounter: 100 - 200 - 300 - 400 - 500 - 600 - 700 - 800 - 900 - 1000

  • scarface
    Professional
    Berichten
    1.597
    • 4 september 2012 om 17:23
    • #14

    Beste r-mulder ,

    Dat eerste scriptje wat je kreeg klopt na mijn mening ook niet helemaal. -c is geen geldige test hoe het wel moet bijvoorbeeld : )

    ping 55.555.55.55 -t -l 100 , Als je dit in CMD uitvoert dan doet hij het oneindig is niet zo best voor je server , Maar met -c kan je niet pingen.

    PHP
    <?php
    /* our simple php ping function */
    function ping($host){        exec(sprintf('ping IPADRES -t 1 -l 500', escapeshellarg($host)), $res, $rval);        return $rval === 0;}
    /* check if the host is up        $host can also be an ip address */$host = 'www.example.com';$up = ping($host);
    /* optionally display either a red or green image to signify the server status */echo '<img src="'.($up ? 'on' : 'off').'.jpg" alt="'.($up ? 'up' : 'down').'" />';
    ?>

    Aleen de code komt achterlkaar te staan wel wat iritant na mijn mening.
    Groeten .

  • r-mulder
    Elite Member
    Berichten
    968
    • 4 september 2012 om 18:44
    • #15

    Met dank aan Brokentrack werkt die nu.. de eerste script werkte perfect maar Versio blokkeerd de poort.
    Heb het online gezet op me vps en hij werkte gelijk omdat die de poorten wel doorlaat :)

    Super bedankt allemaal & Brokentrack !!

    Dit topic kan wat mij betreft op slot. :thumbup:

    Postcounter: 100 - 200 - 300 - 400 - 500 - 600 - 700 - 800 - 900 - 1000

  • M.Remijn
    Intermediate
    Ontvangen Reacties
    6
    Berichten
    226
    • 5 september 2012 om 09:28
    • #16

    Hoezo gebruik je niet gewoon gametracker, is veel makkelijk, gewoon even een html bestandje op je website gooien.
    Het is echt geen ramp dat je gegevens van een andere site gebruikt

  • r-mulder
    Elite Member
    Berichten
    968
    • 5 september 2012 om 11:39
    • #17

    Zoals al eerder vermeld ik wou dat hij aangaf of de server online was of offline.
    Wou ook graag zien hoeveel spelers etc er in zaten en wie.

    Ik maak sowieso altijd gebruik van gametracker maar dan heb je alleen een banner en moet je er op klikken voor je de details gaat zien.
    Deze details komen onder de banners zo kan men gelijk zien wie er in zitten en wat er in/uitgeschakeld is.

    Rechtsboven op de site wou ik graag hebben:
    War server: Online
    Fun server: offline...
    dat ie het zelf herkent zeg maar en dat werkt nu super :thumbup:

    Postcounter: 100 - 200 - 300 - 400 - 500 - 600 - 700 - 800 - 900 - 1000

Participate now!

Heb je nog geen account? Registreer je nu en word deel van onze community!

Maak een account aan Login

ICT Nieuws

  • Fijne feestdagen

    tcbhome 28 december 2025 om 13:55
  • Kritieke update voor Really Simple Security-plug-in

    K.Rens 16 november 2024 om 16:12
  • ING Nederland streeft naar ondersteuning van Google Pay tegen eind februari

    K.Rens 2 november 2024 om 16:09

Blogs

  • Functioneel ontwerp

    Dees 28 december 2014 om 12:38
  • Access Control List implementatie in PHP/MySQL - deel 1/2

    FangorN 28 december 2018 om 12:35
  • Access Control List implementatie in PHP/MySQL - deel 2/2

    FangorN 29 december 2018 om 12:37

Gebruikers die dit topic bekijken

  • 3 Gasten
  1. Marktplaats
  2. Design
  3. Voorwaarden
  4. Ons team
  5. Leden
  6. Geschiedenis
  7. Regels
  8. Links
  9. Privacy Policy
ICTscripters ©2005 - 2026 , goedkope hosting door DiMoWeb.com, BE0558.915.582
Sponsors: Beste kattenhotel provincie Antwerpen | Beste Zetes eid kaartlezer webshop
Style: Nexus by cls-design
Stylename
Nexus
Manufacturer
cls-design
Licence
Commercial styles
Help
Supportforum
Visit cls-design