• http://www.codediesel.com/php/ping-a-server-using-php/

    http://www.dynamicdrive.com/forums/showthread.php?t=37370

    http://www.planet-source-code.com/vb/scripts/ShowCode.asp?lngWId=8&txtCodeId=1786

    http://www.theworldsend.net/
    http://www.theworldsend.net/ping_src.php

    function icmpChecksum
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    // Checksum calculation function
    function icmpChecksum($data) {
    if (strlen($data)%2) $data .= "\x00";

    $bit = unpack('n', $data);
    $sum = array_sum($bit);

    while ($sum >> 16) $sum = ($sum >> 16) ($sum & 0xffff);

    return pack('n', ~$sum);
    }

    // Making the package
    $type = "\x08";
    $code = "\x00";
    $checksum = "\x00\x00";
    $identifier = "\x00\x00";
    $seqNumber = "\x00\x00";
    $data = "Scarface";
    $package = $type.$code.$checksum.$identifier.$seqNumber.$data;
    $checksum = icmpChecksum($package); // Calculate the checksum
    $package = $type.$code.$checksum.$identifier.$seqNumber.$data;

    // And off to the sockets
    $socket = socket_create(AF_INET, SOCK_RAW, 1);
    socket_connect($socket, "www.google.com", null);

    // If you’re using below PHP 5, see the manual for the microtime_float
    // function. Instead of just using the microtime() function.
    $startTime = microtime(true);
    socket_send($socket, $package, strLen($package), 0);
    if (socket_read($socket, 255)) {
    echo round(microtime(true) - $startTime, 4) .' seconds';
    }
    socket_close($socket);

    Prev:
    PHP:: TraceRoute
    Next:
    PHP:: Nslookup (Bare Bones)