Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.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和广域网IP+;还是C#?_C#_C++ - Fatal编程技术网

使用C+区分本地IP和广域网IP+;还是C#?

使用C+区分本地IP和广域网IP+;还是C#?,c#,c++,C#,C++,我想写一个功能如下所述的函数 bool isLocalIp(String _ip); _ip: The string with a ip format or a domain format (ex: 112.42.11.44 or http://abc.def.com/) Return: True if the _ip is Local IP, False if _ip is WAN IP 我已经搜索过了,但没有找到任何关于这个的话题。 有人能告诉我怎么写这个函数吗 非常感谢, T&T本地IP

我想写一个功能如下所述的函数

bool isLocalIp(String _ip);
_ip: The string with a ip format or a domain format (ex: 112.42.11.44 or http://abc.def.com/)
Return: True if the _ip is Local IP, False if _ip is WAN IP
我已经搜索过了,但没有找到任何关于这个的话题。 有人能告诉我怎么写这个函数吗

非常感谢,


T&T

本地IP通常是私有IP,因此在
10.x.x
192.168.x.x
172.16.0.0-172.31.255.255


但是,本地IP也可以是公共IP,在这种情况下,您需要执行类似于
tracert
的操作并解释结果。

本地IP与WAN IP是一个定义不明确的概念(最多)。例如,VPN连接可以为通过WAN连接的计算机提供“本地”IP地址

也就是说,基本思想相当简单。子网掩码正是用于此目的。您通常从您的本地IP地址开始,然后查找其他地址是否是它的本地地址。为此,将
每个地址与子网掩码进行比较。如果它们不相等,则它们位于不同的子网上

但是,请注意,一台机器可能是多主机的,这意味着它有两个或多个适配器,每个适配器可能位于不同的子网上。因此,您确实希望获得所有本地适配器的列表,并对照每个适配器检查地址

这可能意味着它实际上是一个广域网连接。举个例子,在一家规模相当大的公司的校园里,你可能有许多子网,这些子网至少在某种程度上都是本地的

然而,对于一个典型的家庭用户来说,这将很好地工作。路由器这一边的所有东西都将使用本地子网,而路由器另一边的所有东西都将在本地子网之外有一些地址

<>在C++中,你可以得到一个适配器列表,每个地址和子网掩码都有./p> 这一切都取决于您使用的是数字IP地址。如果您使用的是域名,则首先需要将其解析为数字IP地址,例如with或


还要注意,我上面所描述的实际上是针对IPv4的。IPv6的概念有点类似,但细节差别很大,几乎肯定需要单独的代码。

谢谢!杰瑞·科芬。