我想知道是否可以使用PHP创建网络层数据包(即定义我自己的IP头)?似乎socket_create
SOCK_RAW
只允许您定义IP数据包的内容,而不是标题本身。
提前感谢您的回复!
答案 0 :(得分:0)
我能够在Mac OS X上使用SOCK_RAW
成功创建套接字,只要我以root身份运行脚本。
我使用的示例取自Jean Charles MAMMANA's 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();
}