2012-07-06 54 views
1

我有兩個獨立的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] 
+0

XP是什麼問題? – BugFinder 2012-07-06 06:24:33

+1

如果兩個exe都在同一臺機器上,爲什麼不使用127.0.0.1,localhost或命名管道? – 2012-07-06 06:26:13

+0

其實我忘了提及應用程序的設計方式,client.exe可以放在另一臺機器上 – Deepesh 2012-07-06 09:22:14

回答

4

哦,那些wh程序,不知道。

  • 您不需要知道IP地址,請使用127.0.0.1,這是一個本地環回地址。像這樣的SImple - 正是出於這個原因。

  • 考慮高效。如果這是同一臺機器,則TCP的使用情況很糟糕。使用命名管道是一種Windows集成通信機制,它可以跨越機器工作,但在同一臺機器上使用共享內存,這比TCP更有效。

+0

其實我忘了提到應用程序的設計方式是client.exe可以放在另一臺機器上以及 – Deepesh 2012-07-06 09:22:02

+0

那麼,仍然 - 在這種情況下找到IP地址可能會讓你錯誤的 - 這些日子裏有多MULTIPLE,尤其是如果你考慮到計算機通常有2-3(鏈接,本地,公共)的IPv6考慮。 – TomTom 2012-07-06 09:26:50

+0

對,我想從IPv4中取出ip,那麼正確的方法是什麼? – Deepesh 2012-07-06 09:32:23

1

是否有特定要求不使用127.0.0.1?如果不是,那麼我只是沒有任何計算就使用它。

4

爲什麼不只是使用IPAddress.Loopback(或IPv6Loopback)?

環回地址是專爲完全在同一主機上通信而設計的。


我也猜測,在那裏你說:

以下行返回的Mac地址

你真正的意思是,它返回的IPv6地址。該代碼無法返回MAC地址。

+0

正確的MAC地址我的意思是說它返回IPV6地址 – Deepesh 2012-07-06 09:23:06