Следующий код отлично работает для учетной записи администратора, но для учетной записи без администратора он дважды печатает успех, а затем выдает исключение System.Net.Sockets.SocketException (0x80004005): была предпринята попытка доступа к сокету способом, запрещенным его разрешениями на доступ. У кого-нибудь есть понимание, почему это так?
К вашему сведению, фактический вариант использования здесь — это несколько приложений, использующих один и тот же адрес PGM и сокет. для отправки (через многоадресную рассылку) обновлений в реальном времени. Это доказательство того, что это не вызвано нашими собственными библиотеками.
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();
}
}