我有一个IPv4地址。防爆。 172.19.20.21
我曾经这样做过
$fs = @fsockopen($ip,$port,$errno,$errstr,3);
if( !$fs ){
$error = 'SSC is down';
return Redirect::to('/')->with('error', $error )
->withInput(Request::except('password'));
}
完美无缺。
现在,我有一个IPv6地址Ex。 3000::1
if ((strpos($ip, ":") > -1)){
// Code for IPv6 check
$fs = @fsockopen($ip,$port,$errno,$errstr,3);
if( !$fs ){
$error = 'SSC is down';
return Redirect::to('/')->with('error', $error )
->withInput(Request::except('password'));
}
}else{
// Code for IPv4 check
$fs = @fsockopen($ip,$port,$errno,$errstr,3);
if( !$fs ){
$error = 'SSC is down';
return Redirect::to('/')->with('error', $error )
->withInput(Request::except('password'));
}
}
我可以在上面使用此代码吗?或者我需要寻找其他IPv6解决方案?
答案 0 :(得分:1)
解析IP地址的内置方法是inet_pton():
此函数转换人类可读的IPv4或IPv6地址(如果是PHP 在启用IPv6支持的情况下构建到地址系列中 适当的32位或128位二进制结构。
例如,要确定格式,请计算结果字节:
strlen(inet_pton($ip))
4 bytes = 32 bits = IPv4
16 bytes = 128 bits = IPv6
(但是,在您的确切用例中,首先需要解释的原因尚不清楚。)