微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PHP查询SRV记录

我运行一个minecraft网站,目前在使用查询协议时,它无法与SRV记录一起使用.

我只是想知道有没有办法获得SRV记录所指向的ip和端口.

E.g: mc.lunarphase.co.uk => 192.198.91.238:64759

解决方法:

最简单的方法可能是使用挖掘.你可以直接使用套接字,但这样的东西更容易(恕我直言):

function getDNS($hostname, $type='') {
        $records=`dig +noall +answer $hostname $type`;
        $records=explode("\n",$records);
        $res_hostname='';
        $port=0;

        foreach ($records as $record) {
                preg_match_all('/([^\s]+)\s*/',$record, $matches);
                if (is_array($matches) && is_array($matches[1]) && count($matches[1]) > 3) {
                        switch (strtoupper($matches[1][3])) {
                        case 'SRV':
                                if (count($matches[1]) > 6) {
                                        $port=$matches[1][6];
                                        $res_hostname=$matches[1][7];
                                }
                                break;
                        case 'A':
                        case 'CNAME':
                                if (count($matches[1]) > 3) {
                                        $res_hostname=$matches[1][4];
                                }
                                break;
                        }
                        if (!empty($res_hostname) && substr($res_hostname, -1) == '.') break; // if it's a cname, we've probably already got the ip, so keep going just in case (but we might not so don't count on it!)
                }
        }
        if (substr($res_hostname, -1) == '.') { // we have more resolving to do
                $res_hostname=getDNS(trim($res_hostname, '. '));
        }

        if (empty($res_hostname)) die('Failed to lookup IP for ' . (!empty($type) ? '(' . $type .' record) ' : '' ) . $hostname . PHP_EOL);
        if (empty($port)) return $res_hostname;
        return $res_hostname . ':' . $port;
}
$hostIPPair=getDNS('example.com', 'srv');

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐