我正在构建一个应用程序,用户可以通过指定服务器的IP地址或域名来指定要连接的服务器。但是,如何解析此输入,以便应用程序知道它是IP地址还是域名?区分IP地址和DNS记录的原因是什么?
我试图在我们的DNS服务器中添加一个IP地址作为域名。而且有效。我现在可以将192.168.30.230例如解析为10.0.0.1。我什至可以ping它(因为我在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地址和域名可以互换,还是在解析用户输入时可以做任何假设?
答案 0 :(得分:1)
您应该使用regex测试用户输入,就像ping命令一样。以下示例应匹配从0.0.0.0
到255.255.255.255
的任何数字变化。任何不匹配的内容都应视为域名。
/^(?=.*[^\.]$)((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.?){4}$/