我正在尝试使用php检查我的代码中是否未连接ip6。我现在的想法是计算加载是否要连接。我尝试使用此代码。
$file = file_get_contents('http://ip6.me/');
// Trim IP based on HTML formatting
$pos = strpos( $file, '+3' ) + 3;
$ip = substr( $file, $pos, strlen( $file ) );
// Trim IP based on HTML formatting
$pos = strpos( $ip, '</' );
$ip = substr( $ip, 0, $pos );
$ipaddress = $ip;
$ip_get = explode('.',$ipaddress);
如果能得到ip地址,这对我来说很好。但有一段时间ip6下降,它加载到很多。检查ip6是否已关闭的最佳方法是什么?我尝试计算浏览器的负载,但我不知道该怎么做。
答案 0 :(得分:2)
我会通过IPv6 ping服务器。在linux上,您可以使用以下代码。
exec('ping -6 -c 1 2001:4860:4860::8888', $lines, $exit); // ping will return 0 if ping succeeds
if($exit == 0) {
// up
echo "up\n";
} else {
//down
echo "down\n";
}
修改强>
Samuel的回答测试TCP端口是否可通过IPv6访问。在某些情况下,由于防火墙配置,只有其中一种方法可以工作。
答案 1 :(得分:1)
您可以使用本机PHP方法socket_connect
bool socket_connect ( resource $socket , string $address [, int $port = 0 ] )
使用套接字资源套接字启动到地址的连接, 它必须是使用socket_create()创建的有效套接字资源。
// Creating new socket
$socket = socket_create(AF_INET6, SOCK_STREAM, SOL_TCP)
or die("Unable to create socket\n");
// Trying to connect, will return True on success
$res = socket_connect($socket, $host, $port))