2016-12-21 2 views
0

Как подключиться через сокет, используя DNS-имя из no-ip? или Есть ли способ получить IP-адрес от имени no-ip dns?PHP-сокет с использованием no-ip

работает

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

но IP является динамическим. мне нужно что-то вроде:

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

I've пытался gethostbyname(), но возвращает тот же IP-адрес для всех не-IP имени.

ответ

0

Это решение будет зависеть от вашего сервера, но вы можете отказаться от возможностей собственной операционной системы. Например, большинство 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-hostname-to-an-ip-address-in-a-bash-script

+0

Привет Джереми, это не работает, потому что она возвращает тот же IP-адрес для всех не-IP имя DNS, как метод gethostbyname(), что я сказал выше. –

+0

Должен быть вариант linux gethostbyname(), который выполняет обычный поиск в DNS - не имеет значения, чем это делает ваш веб-браузер. Может быть, «копать»? –

+0

@JeremyHarris 'nslookup'? – Vovanrock2002