Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/142.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 解析过程中如何区分IP地址和域名_C++_Parsing_Networking_Dns_Ip Address - Fatal编程技术网

C++ 解析过程中如何区分IP地址和域名

C++ 解析过程中如何区分IP地址和域名,c++,parsing,networking,dns,ip-address,C++,Parsing,Networking,Dns,Ip Address,我正在构建一个应用程序,用户可以通过指定服务器的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安装程序如下所示:

我正在构建一个应用程序,用户可以通过指定服务器的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。
Ping 192.168.30.230[10.0.0.1]和32字节的数据:

从10.0.0.1回复:bytes=32 time您应该使用regex测试用户输入,就像ping命令一样。以下示例应匹配从
0.0.0.0
255.255.255.255
的任何数值变化。任何不匹配的内容都应被视为域名

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

是的,那是我的第一个想法。但后来我测试了用DNS重定向IP。我开始想为什么会这样。。。只是因为我在最后加了一个点,它不能通过正则表达式吗?DNS中的一些规则说点应该被忽略?IP地址由4个从0到255的数字序列组成,每个序列由一个点分隔。一旦添加第四个点,它就不再是ip地址。这就是你重定向成功的原因。是的,但为什么在查找过程中忽略了最后一个点?我在DNS服务器的A主机记录末尾没有任何点。它们被一些DNS规范忽略了吗?这更多地与您的外壳/终端如何解释点有关。CMD将其解释为正则表达式的通配符(匹配点之前的所有内容和点之后的所有内容)。请尝试以下命令以更清晰地显示:
ping 10.1
ping“10.1”ping 10.0.0.1 ping“10.0.0.1”ping 192.168.30.230 ping“192.168.30.230”
/^(?=.*[^\.]$)((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.?){4}$/