如何使用PHP和fsockopen检查UDP地址是否存在?
我正在使用如何使用PHP和fsockopen检查UDP地址是否存在?,php,sockets,Php,Sockets,我正在使用fsockopen从UDP地址获取信息,唯一的问题是某些UDP地址可能仍然不活动 我通过创建套接字 $fp = fsockopen($tracker, $port, $errno, $errstr, 1); 如果地址有效,一切正常,但如果地址无效,则会生成此错误 Warning: fsockopen(): php_network_getaddresses: getaddrinfo failed: Name or service not known in 我试过这样做,但仍然会产生错
fsockopen
从UDP地址获取信息,唯一的问题是某些UDP地址可能仍然不活动
我通过创建套接字
$fp = fsockopen($tracker, $port, $errno, $errstr, 1);
如果地址有效,一切正常,但如果地址无效,则会生成此错误
Warning: fsockopen(): php_network_getaddresses: getaddrinfo failed: Name or service not known in
我试过这样做,但仍然会产生错误
if(!$fp = fsockopen($tracker, $port, $errno, $errstr, 1)) {
// ERROR
} else {
// CONTINUE
}
我可以抑制错误,一切都很好,但我不喜欢在我的代码中抑制错误
如何确保任何给定的UDP地址在php中仍处于活动状态
谢谢您可以实现自己的错误处理程序,而不是抑制可以执行的错误
@
您可以实现自己的错误处理程序,而不是抑制错误
@
我想知道是否有一个PHP设置可以像使用libxml和cURL那样禁用套接字/流错误。就像你说的,你也可以使用讨厌的老黑客@fsockeopen(…)
来抑制它们。如果我想使用cURL,我会这样做,但它不支持UDP,至少如果它支持UDP,我不知道怎么做!我想知道是否有一个PHP设置可以像使用libxml和cURL那样禁用套接字/流错误。就像你说的,你也可以使用讨厌的老黑客@fsockeopen(…)
来抑制它们。如果我想使用cURL,我会这样做,但它不支持UDP,至少如果它支持UDP,我不知道怎么做!
<?php
//Simple Blank error handler
set_error_handler('my_error_handler');
function my_error_handler($errno, $errstr, $errfile, $errline) {}
function checkUDP($host,$port=80){
//look no suppression
$fp = fsockopen("udp://".$host, $port, $errno, $errstr,1.0);
if (!$fp) {
return false;
} else {
fclose($fp);
return true;
}
}
$good = 'tracker.publicbt.com';
$bad = 'trjjacker.publicbt.com';
if(checkUDP($good)){
echo $good.' Good';
}else{
echo $good.' Bad';
}
echo '<br />';
if(checkUDP($bad)){
echo $bad.' Good';
}else{
echo $bad.' Bad';
}
//tracker.publicbt.com Good
//trjjacker.publicbt.com Bad
?>