在.Net中获取IP地址的正确方法是什么?
我有两个独立的exe的Parent.exe和Child.exe。在.Net中获取IP地址的正确方法是什么?
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]
哦,那些wh程序,不知道。
您不需要知道IP地址,请使用127.0.0.1,这是一个本地环回地址。像这样的SImple - 正是出于这个原因。
考虑高效。如果这是同一台机器,则TCP的使用情况很糟糕。使用命名管道是一种Windows集成通信机制,它可以跨越机器工作,但在同一台机器上使用共享内存,这比TCP更有效。
是否有特定要求不使用127.0.0.1?如果不是,那么我只是没有任何计算就使用它。
为什么不只是使用IPAddress.Loopback
(或IPv6Loopback
)?
环回地址是专为完全在同一主机上通信而设计的。
我也猜测,在那里你说:
以下行返回的Mac地址
你真正的意思是,它返回的IPv6地址。该代码无法返回MAC地址。
正确的MAC地址我的意思是说它返回IPV6地址 – Deepesh 2012-07-06 09:23:06
XP是什么问题? – BugFinder 2012-07-06 06:24:33
如果两个exe都在同一台机器上,为什么不使用127.0.0.1,localhost或命名管道? – 2012-07-06 06:26:13
其实我忘了提及应用程序的设计方式,client.exe可以放在另一台机器上 – Deepesh 2012-07-06 09:22:14