如何在解析过程中区分 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.0255.255.255.255 的任何数字变体。任何不匹配的都应被视为域名。

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