Windows Phone 8 用のテスト アプリを作成し、エミュレーターでテストしています。UDP ソケットを作成し、使用するローカル ソケット エンドポイントを特定したいと考えています。私が抱えている問題は、エミュレーターに 2 つのネットワーク インターフェイスがあり、そのうちの 1 つだけが外部ネットワーク接続を備えていることです。デフォルトでは、接続されていないインターフェイスが使用されます。ソケットを作成するときに正しいアダプターが使用されていることを確認するにはどうすればよいですか?
Socket m_socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
m_socket.SetNetworkPreference(NetworkSelectionCharacteristics.NonCellular);
SocketAsyncEventArgs receiveArgs = new SocketAsyncEventArgs();
receiveArgs.RemoteEndPoint = new IPEndPoint(IPAddress.Any, 0);
receiveArgs.SetBuffer(new Byte[2048], 0, 2048);
receiveArgs.Completed += SocketRead_Completed;
// If I bind to the specific IP address of the connected adapter it will work.
//m_socket.Bind(new IPEndPoint(IPAddress.Parse("10.1.1.7"), 0));
// if I leave it up to WP8 the wrong adapter gets used.
m_socket.Bind(new IPEndPoint(IPAddress.Any, 0));
m_socket.ReceiveAsync(receiveArgs);