複数の NIC を搭載したコンピュータを使用していますが、UDPClient の send メソッドが頻繁に失敗します。コードは次のとおりです。
private static void receiveData()
{
recvSock = new UdpClient(PORT);
//recvSock.Client.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.MulticastInterface, mainInterface);
recvSock.JoinMulticastGroup(IPAddress.Parse(IP), 50);
IPEndPoint iep = new IPEndPoint(IPAddress.Any, 0);
while (true)
{
byte[] data = recvSock.Receive(ref iep);
// Do not include messages from us
if (myIPs.Contains(iep.Address))
continue;
string stringData = Encoding.ASCII.GetString(data, 0, data.Length);
Console.WriteLine("received: " + stringData);
}
}
PORT = 5000 および IP = 224.5.6.7 なので、問題ありません。主な問題は、recvSock.Receive() 行を通過できないことです。パケットがwireshark経由で入ってくるのが見えますが、コードはそれらを処理しません...
考え?前もって感謝します!
ダン
編集: 複数の NIC が問題を引き起こしていることを確認できます --- コードは単一の NIC で正常に動作します。SetSocketOption 行のコメントを外すと、複数の NIC で動作するようになりますが、それでも失敗します....