Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用PHP和fsockopen检查UDP地址是否存在?_Php_Sockets - Fatal编程技术网

如何使用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
?>