如何使用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(),但它返回所有NO-IP名称的IP。
此解决方案将取决于您的服务器,但是您可能会退缩到本机操作系统功能。例如,大多数Linux安装具有glibc
,允许您运行一个命令:
getent hosts blahblabla.ddns.net | awk '{print $1}'
现在,PHP函数诸如exec()
和system()
之类的功能可用于运行类似的内容。
例如:
$command = 'getent hosts google.com | awk '{print $1 ; exit}'';
$ip = exec($command);
然后使用IP连接到套接字。
注意:,除非您想遇到糟糕的时间,否则请不要通过提供的用户输入。
参考:https://unix.stackexchange.com/questions/20784/how-can-i-resolve-a-a-hostname-to-an-ip-address-indress-indress-in-a-a-bash-bash-script