次のコードは、管理者アカウントでは正常に機能しますが、管理者以外のアカウントでは成功を 2 回出力し、System.Net.Sockets.SocketException (0x80004005) をスローします: アクセス許可によって禁止されている方法でソケットにアクセスしようとしました。これがなぜなのか、誰にも洞察がありますか?
参考までに、ここでの実際の使用例は、同じ PGM アドレスとソケットを使用する複数のアプリケーションです。(マルチキャストを介して) リアルタイム更新をプッシュします。この Poof of concept は、これが私たち自身のライブラリによって引き起こされたものではないということです。
class Program {
static void Main(string[] args) {
IPAddress ipAddr = IPAddress.Parse("239.0.0.2");
IPEndPoint end = new IPEndPoint(ipAddr, 40002);
Socket[] _sockets = new[] {
new Socket(AddressFamily.InterNetwork, SocketType.Rdm, (ProtocolType)113 ),
new Socket(AddressFamily.InterNetwork, SocketType.Rdm, (ProtocolType)113 ),
new Socket(AddressFamily.InterNetwork, SocketType.Rdm, (ProtocolType)113 )
};
foreach (var socket in _sockets)
{
socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
socket.Bind(end);
Console.WriteLine("Success");
}
Console.ReadLine();
}
}