1


0

WCF IPv6エンドポイント

EPoS端末用のWindowsアプリで、WCFとともにPeer 2 Peerを使用する可能性を調査しています。

アプリは、ローカルネットワーク内の複数のPCに配置されます。 PCごとにアプリのインスタンスは1つしかありません。

私の現在の考えは、アプリが起動してピアメッシュに参加し、メッシュに参加すると、端末IDとIPv6アドレスを含む「ハートビート」メッセージを定期的に叫ぶことです。

メッシュに参加する他の端末はこれらのハートビートを受信し、ネットワーク内の端末の独自のリストを維持します。

アプリ内のアクションでは、ネットワーク上の特定の端末にアクセスする必要があります。 そのため、アプリは端末IDをIPアドレスに解決し、net.tcp経由でサービスにアクセスするためのUriを生成できます

リンクローカルアドレスを使用してサービスエンドポイントを公開しました

printingHostRemote = New ServiceHost(printSpooler, New Uri("net.tcp://" & myNetworkAddress & "/" & ServiceNames.PrintingService))
printingHostRemote.AddServiceEndpoint(GetType(IPrintingService), tcpPipeBinding, "net.tcp://" & myNetworkAddress & "/" & ServiceNames.PrintingService)

エンドポイントをセットアップする文字列は、たとえば次のようになります。

「net.tcp:// [fe80

250:56ff:fec0:8%4]:5555 / GSS-POS / PrintingService」

ただし、このサービスにアクセスしようとすると、ホストに到達できないというエラーが表示されます。

TCPエラーコード10065:到達不能なホストfe80

290:5ff:fe01:6303%4:5555に対してソケット操作が試行されました

これは、IPv6アドレッシングについての私の限られた知識によるものだと思います。 エンドポイントにはどのアドレスを使用する必要がありますか(リンクローカルIPv6アドレスを使用しています)? または、私の全体的な概念に欠陥がありますか?

TIA,

サイモン

2 Answer


0


さて、私は今これを理解していると思います。

私の開発マシンにはVMWareがインストールされているため、他に2つのネットワークインターフェイスがあります。 使用するローカルネットワークインターフェイスのスコープをリモートマシンのIP6アドレスに追加する必要があります。


0


現在、ビジネスソリューションとして作成したクライアント/サーバー(ネットワークレイヤー)/データベースのセットアップを実際に実行しています。ビジネスパートナーのオンサイトインターネット(Comcast)では、IPV6が唯一の方法です。 LAN内のものにアクセスし、以前はIPV4のみにアクセスします。 私はそれを正しいマシンアドレスにマッピングし、IPV6を両側で動作させましたが、あなたが説明しているのは…​未加工のIPV6アドレスで経験していたことです。 使用するドメイン名のAAAAレコードを作成し、それをルーターの正しいマシンにポート転送します…​それを行うと、解決したら動作しますが、16進数を使用することはできません。ドメイン名を使用します。 または、少なくともそれは私のために働いた方法です。 16進アドレスを取得しない理由を知りたいのですが。