【问题标题】:PHP socket using no-ip使用无 IP 的 PHP 套接字
【发布时间】:2016-12-21 19:07:29
【问题描述】:

如何使用来自 no-ip 的 DNS 名称通过套接字连接?或者有没有办法从 no-ip dns 名称中获取 IP?

工作

$cnt = socket_connect($socket,"100.100.100.100",$port);

但 IP 是动态的。 我需要类似的东西:

$cnt = socket_connect($socket, "blablabla.ddns.net",$port);

我尝试过 gethostbyname(),但它为所有无 IP 名称返回相同的 IP。

【问题讨论】:

    标签: php sockets noip


    【解决方案1】:

    此解决方案取决于您的服务器,但您可以回退到本机操作系统功能。例如,大多数 Linux 安装都有glibc,允许您运行如下命令:

    getent hosts blahblabla.ddns.net | awk '{print $1}'
    

    现在,像 exec()system() 这样的 PHP 函数可以用来运行这样的东西。

    例如:

    $command = 'getent hosts google.com | awk \'{print $1 ; exit}\'';
    $ip = exec($command);
    

    然后使用 IP 连接到您的套接字。

    注意:请不要将用户提供的输入传递给此,除非您想玩得不开心。

    参考:https://unix.stackexchange.com/questions/20784/how-can-i-resolve-a-hostname-to-an-ip-address-in-a-bash-script

    【讨论】:

    • 嗨 Jeremy,它不起作用,因为它为所有无 IP DNS 名称返回相同的 IP,就像我上面所说的方法 gethostbyname()。
    • 必须有一个 gethostbyname() 的 linux 变体,它可以执行正常的 DNS 查找——与您的网络浏览器执行此操作没有区别。也许dig
    • @JeremyHarris nslookup?
    猜你喜欢
    • 2014-07-15
    • 2013-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-30
    • 2012-07-05
    • 2014-02-10
    • 1970-01-01
    相关资源
    最近更新 更多