如何在解析过程中区分 IP 地址和域名
How to differentiate IP-addresses from domain names during parsing
我正在构建一个应用程序,用户可以通过指定服务器的 IP 地址或域名来指定要连接的服务器。但是我如何解析这个输入以便应用程序知道它是 IP 地址还是域名? IP 地址与 DNS 记录的区别是什么?
我试图在我们的 DNS 服务器中添加一个 IP 地址作为域名。它奏效了。我现在可以将 192.168.30.230 解析为 10.0.0.1。我什至可以 ping 通它(因为我在 10.0.0.1 上有一个设备)。然而,这需要我在地址后添加一个 .
(点)以强制 ping
查找它。否则它会像使用 IP 地址一样使用它。 A.k.a没查到
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 地址和域名是否可以互换,或者在解析用户输入时我可以做任何假设吗?
您应该使用正则表达式测试用户输入,就像 ping 命令一样。下面的示例应匹配从 0.0.0.0
到 255.255.255.255
的任何数字变体。任何不匹配的都应被视为域名。
/^(?=.*[^\.]$)((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.?){4}$/
我正在构建一个应用程序,用户可以通过指定服务器的 IP 地址或域名来指定要连接的服务器。但是我如何解析这个输入以便应用程序知道它是 IP 地址还是域名? IP 地址与 DNS 记录的区别是什么?
我试图在我们的 DNS 服务器中添加一个 IP 地址作为域名。它奏效了。我现在可以将 192.168.30.230 解析为 10.0.0.1。我什至可以 ping 通它(因为我在 10.0.0.1 上有一个设备)。然而,这需要我在地址后添加一个 .
(点)以强制 ping
查找它。否则它会像使用 IP 地址一样使用它。 A.k.a没查到
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 地址和域名是否可以互换,或者在解析用户输入时我可以做任何假设吗?
您应该使用正则表达式测试用户输入,就像 ping 命令一样。下面的示例应匹配从 0.0.0.0
到 255.255.255.255
的任何数字变体。任何不匹配的都应被视为域名。
/^(?=.*[^\.]$)((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.?){4}$/