Как отличить IP-адреса от доменных имен при разборе - PullRequest
0 голосов
/ 13 июня 2019

Я создаю приложение, в котором пользователь получает возможность указать сервер для подключения, указав IP-адрес или доменное имя сервера.Но как мне проанализировать этот ввод, чтобы приложение знало, является ли это IP-адресом или доменным именем?Что отличает IP-адрес от записи DNS?

Я попытался добавить IP-адрес в качестве имени домена на нашем DNS-сервере.И это сработало.Теперь я могу разрешить, например, с 192.168.30.230 до 10.0.0.1.Я могу даже пинговать его (как у меня устройство на 10.0.0.1).Это, однако, требует, чтобы я добавил . (точка) после адреса, чтобы ping нашел его.В противном случае он использовал бы его как IP-адрес.Ака, не ищите.

Настройка DNS выглядела примерно так:

RECORD    DNS Address       IP-Adress
A         192.168.30.230    10.0.0.1
C:\Users\JohnDoe>ping 192.168.30.230.

Pinging 192.168.30.230 [10.0.0.1] with 32 bytes of data:
Reply from 10.0.0.1: bytes=32 time<1ms TTL=127
Reply from 10.0.0.1: bytes=32 time<1ms TTL=127
Reply from 10.0.0.1: bytes=32 time<1ms TTL=127
Reply from 10.0.0.1: bytes=32 time<1ms TTL=127

Ping statistics for 10.0.0.1:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 0ms, Maximum = 0ms, Average = 0ms

Правда ли, что IP-адреса и доменные имена являются взаимозаменяемыми или я могу делать какие-либо предположения, когдапарсинг пользовательского ввода?

1 Ответ

1 голос
/ 13 июня 2019

Вы должны проверить пользовательский ввод с помощью регулярного выражения, как это делает команда ping.Приведенный ниже пример должен соответствовать любому числовому варианту от 0.0.0.0 до 255.255.255.255.Все, что не соответствует, должно рассматриваться как доменное имя.

/^(?=.*[^\.]$)((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.?){4}$/
...