什么是在.Net中获取IP地址的正确方法?

时间:2012-07-06 06:21:38

标签: c# .net tcp

我有两个独立的exe的Parent.exe和Child.exe。

Parent.exe打开Child.exe,然后用户在child.exe中执行一些操作 child.exe将一些已处理的数据发送回Parent.exe。两个exe都停留在同一台机器上

Child.Exe和Parent.Exe之间的通信正在通过TCP IP(套接字编程)完成。为此,我们需要计算本地IP地址,我们用以下列方式计算它: -

       string hostname = Dns.GetHostName();

       IPHostEntry ipEntry = Dns.GetHostEntry(hostname);
       IPAddress[] addr = ipEntry.AddressList;
       string FinalIpAddrs = addr[0]

在XP上一切都运行良好但是在Windows 7中我们遇到了问题。下面的行返回Mac地址是什么样的正确方法,这样它可以在XP和Win7上运行吗?

       string FinalIpAddrs = addr[0]

3 个答案:

答案 0 :(得分:4)

哦,那些节目并且不知道。

  • 您不需要知道IP地址,请使用127.0.0.1,这是本地环回地址。就像那样 - 就是出于这个原因。

  • 考虑有效率。如果那是同一台机器,TCP的使用是不好的。使用命名管道,这是一个Windows集成的通信机制,可以跨机器工作,但在同一台机器上它使用的共享内存比TCP更有效。

答案 1 :(得分:4)

为什么不使用IPAddress.Loopback(或IPv6Loopback)?

环回地址专为完全在同一主机上进行通信而设计。


我也在猜你说的地方:

  

以下行返回Mac地址

你的意思是它正在返回一个IPv6地址。该代码无法返回MAC地址。

答案 2 :(得分:1)

是否有特定要求不使用127.0.0.1?如果不是,那么我只是在没有任何计算的情况下使用它。