簡単な作業だと思っていたことが、ちょっとした悪夢に変わりました。
要するに、ポート 8888、特定のリンク ローカル IPv6 アドレスに UDP リスナーを作成する必要があるということです。
次の行が実行されると、例外がスローされます。
_udpSoc = new UdpClient(MONITOR_INPUT_EVENT_SOCKET, AddressFamily.InterNetworkV6);
(ここで、MONITOR_INPUT_EVENT_SOCKET は値 8888 の const int です)
サポートを探してみたところ、まったく同じ行について説明している MSDN の記事を見つけました。
スローされた SocketException は、「要求されたアドレスはそのコンテキストでは有効ではありません」であり、ErrorCode は 10049 で、スタックトレースは次のとおりです。
at System.Net.Sockets.Socket.DoBind(EndPoint endPointSnapshot, SocketAddress socketAddress)
at System.Net.Sockets.Socket.Bind(EndPoint localEP)
at System.Net.Sockets.UdpClient..ctor(Int32 port, AddressFamily family)
at [my code...]
または、問題の行を次のように変更すると:
_udpSoc = new UdpClient(_groupEp);
(ここで、_groupEp は IPAddress.Any に設定された IPEndPoint であり、ScopeId は正しいインターフェイスと MONITOR_INPUT_EVENT_SOCKET のポートを設定します)
...そして、以前と同じ ErrorCode とスタック トレースで、「要求されたアドレスはそのコンテキストでは有効ではありません」という例外を取得します。
何がうまくいかないのですか?