1

2 つのスタンドアロン 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 では問題に直面しています。以下の行は、XP と Win7 の両方で動作するように、Mac アドレスを返す正しい方法を教えてください。

       string FinalIpAddrs = addr[0]
4

3 に答える 3

4

ああ、それらのwhプログラムと知らない。

  • IPアドレスを知る必要はありません。ローカルループバックアドレスである127.0.0.1を使用してください。そのような単純な-それはまさにその理由のためにあります。

  • 効率的であることを検討してください。それがすべて同じマシンである場合、TCPの使用法は悪いです。名前付きパイプを使用します。これは、マシン間で機能するWindows統合通信メカニズムですが、同じマシンでは、TCPよりもはるかに効率的な共有メモリを使用します。

于 2012-07-06T06:26:47.953 に答える
4

なぜIPAddress.Loopback(またはIPv6Loopback)を使用しないのですか?

ループバックアドレスは、完全に同じホスト上での通信用に設計されています。


私はまたあなたが言うところを推測しています:

以下の行はMacアドレスを返します

実際に意味するのは、IPv6アドレスを返すということです。そのコードがMACアドレスを返すことができるはずの方法はありません。

于 2012-07-06T06:27:12.643 に答える
1

127.0.0.1を使用しないという特定の要件はありますか?いいえの場合は、計算せずに使用します。

于 2012-07-06T06:25:46.657 に答える