确定C#中的公共IP并与主机名进行比较

确定C#中的公共IP并与主机名进行比较,c#,comparison,ip,router,hostname,C#,Comparison,Ip,Router,Hostname,我有一个C语言的程序,我想从我在地下室安装的服务器上获取新闻提要。我还想设置这个程序,使它可以在本地工作。要做到这一点,我认为我需要将我的dyndns.biz主机名的解析ip与路由器的公共ip(我有动态ip,服务器上有一个客户端更新主机名的ip)进行比较,从而确定是否需要使用主机名或服务器的本地ip(192.168.0.100)或主机名。我已经有了连接到ftp服务器的代码,假设我可以正确使用主机名而不是本地化的IP 编辑:总之,由于我意识到这可能不是一个问题,我如何确定a)主机名的解析IP和b)

我有一个C语言的程序,我想从我在地下室安装的服务器上获取新闻提要。我还想设置这个程序,使它可以在本地工作。要做到这一点,我认为我需要将我的dyndns.biz主机名的解析ip与路由器的公共ip(我有动态ip,服务器上有一个客户端更新主机名的ip)进行比较,从而确定是否需要使用主机名或服务器的本地ip(192.168.0.100)或主机名。我已经有了连接到ftp服务器的代码,假设我可以正确使用主机名而不是本地化的IP


编辑:总之,由于我意识到这可能不是一个问题,我如何确定a)主机名的解析IP和b)C#app中我的路由器的公共IP要获取主机名的IP地址,请使用以下代码:

IPAddress[] addresses = System.Net.Dns.GetHostAddresses("www.cnn.com");

要获取路由器或本地网络的公共IP地址,您需要与能够告诉您这一部分的外部系统交谈,不幸的是,我不知道是否有这样的系统可以免费使用,也可以通过程序轻松使用。

要获取主机名的IP地址,请使用以下代码:

IPAddress[] addresses = System.Net.Dns.GetHostAddresses("www.cnn.com");

要获得路由器或本地网络的公共IP地址,您需要与能够告诉您这一部分的外部系统交谈,不幸的是,我不知道是否有这样的系统可以免费使用,也可以从程序中轻松使用。

您将此复杂化了。 只需打开您的
主机
文件(在
C:\Windows\System32\drivers\etc
中找到),并将您的dyndns主机名添加到环回路由中。这样,您就不必向最终应用程序添加任何解决方案代码,以防止它甚至询问您的DNS或路由器:

127.0.0.1 yourhostname.dyndns.biz

你把这件事搞得太复杂了。 只需打开您的
主机
文件(在
C:\Windows\System32\drivers\etc
中找到),并将您的dyndns主机名添加到环回路由中。这样,您就不必向最终应用程序添加任何解决方案代码,以防止它甚至询问您的DNS或路由器:

127.0.0.1 yourhostname.dyndns.biz

我被那里所有的课文迷住了。你是在问如何获取域名的IP地址(即你的“dyndns.biz”主机名)?我意识到这看起来不是一个问题,更新了。同化器的问题也是我遇到的:大多数路由器不允许你使用公共/互联网IP(本质上是环回)从网络上的机器访问你的本地网络。所以他必须检测到这种情况(主机名的IP==本地internet IP->使用LAN IP/环回)。你是在问如何获取域名的IP地址(即你的“dyndns.biz”主机名)?我意识到这看起来不是一个问题,更新了。同化器的问题也是我遇到的:大多数路由器不允许你使用公共/互联网IP(本质上是环回)从网络上的机器访问你的本地网络。因此,他必须检测到这种情况(主机名的IP==本地互联网IP->使用LAN IP/环回)。注意,如果有人能够改进上述答案,请随意将任何东西(有用的)复制到您自己的中,我很乐意删除我的。尽管马里奥提出了一个更好的解决方案,但我相信我将来会使用这些知识:)。非常感谢。请注意,如果有人可以改进上述答案,请随意将任何有用的东西复制到您自己的答案中,我很乐意删除我的答案。尽管马里奥提出了更好的解决方案,但我相信我将来会使用这些知识:)。非常感谢。只是想澄清一下:在执行程序的计算机上修改它,而不是使用服务器的LAN ip。这对我来说是有意义的,但以防有人有同样的问题。快速提问,(我问的部分原因是这个应用程序将由家庭成员使用)假设某台笔记本电脑正在运行此应用程序,并且它需要在局域网内外使用,那么在每次进入和退出局域网时修改主机文件是否更容易?如果该应用程序仅由家庭成员在该局域网内外使用。。。不如改为检查本地计算机的IP地址,并询问用户如果更改/未知,他在哪里?否则,您最初的想法可能会更好(这需要第三台计算机/外部服务器来告诉您您的ip;只需解析这些“What's my ip?”站点的输出即可)。只是想澄清一下:在执行您的程序的计算机上修改它,而不是使用服务器的LAN ip,但如果有人也有同样的问题。快速提问(我问这个问题的部分原因是这个应用程序将由家庭成员使用)假设某台笔记本电脑正在运行这个应用程序,它需要在局域网内外使用,在每次进入和退出局域网时修改主机文件是否更容易?如果应用程序仅由家庭成员在特定局域网内/外使用。。。不如改为检查本地计算机的IP地址,并询问用户如果更改/未知,他在哪里?否则,您最初的想法可能会更好(这需要第三台计算机/外部服务器来告诉您您的ip;只需解析这些“What's my ip?”站点的输出即可)。