Мне удалось успешно создать сокет, используя SOCK_RAW
в Mac OS X, при условии, что я запускал сценарий от имени пользователя root.
Пример, который я использовал, был взят из ping Джина Чарльза Мамманы.inc.php
Я создал оболочку ping.php и выполнил: sudo ping.php www.google.com
.
Вот моя оболочка ping.php:
<?php
$default_timeout = 15;
require("ping.inc.php");
if (count($argv) < 2) usage();
$timeout = count($argv) >= 3 ? intval($argv[2]) : $default_timeout;
$host = $argv[1];
$result = ping($host, $timeout);
if ($result < 0) {
echo "Error: " . $g_icmp_error . "\n";
} else {
echo "$result ms\n";
}
function usage() {
global $argv;
echo "Usage: {$argv[0]} <host> [timeout]\n";
die();
}