Se intentó acceder a un socket de una manera prohibida por sus permisos de acceso. ¿Por qué?

Resuelto andrew asked hace 12 años • 24 respuestas
private void StartReceivingData(string ipAddress, int iPort)
{
    try
    {
        if (!_bContinueReciving)
        {
            //initializeMainSocket(ipAddress, iPort);
            _mSocket = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.IP);//<------HERE IS RAISED THE EXCEPTION
            _mSocket.Bind(new IPEndPoint(IPAddress.Parse(ipAddress), iPort));
            //  _mSocket.Bind(new IPEndPoint(IPAddress.Loopback, iPort));
            _mSocket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.HeaderIncluded, true);
            _mSocket.IOControl(IOControlCode.ReceiveAll, new byte[4] { 1, 0, 0, 0 }, new byte[4] { 0, 0, 0, 0 });
            //var 1
            _mSocket.BeginReceive(_buffReceivedData, 0, _buffReceivedData.Length, SocketFlags.None,
                                 new AsyncCallback(OnReceive), null);
            initializeLocalSocket();
        }
        else
        {
            _bContinueReciving = false;
            _mSocket.Close();
        }
    }
    catch (Exception exception)
    {
        Debug.WriteLine(exception);
    }
}

Recibo un error al intentar iniciar mi programa:

Se intentó acceder a un socket de una manera prohibida por sus permisos de acceso.

No entiendo por qué... funcionó bien y ahora no.

Estoy transmitiendo con VLC y quiero recibir los paquetes, hacer algunos informes y luego volver a transmitir localmente a un reproductor.

andrew avatar May 05 '12 18:05 andrew
Aceptado

Reiniciar el servicio de red de host en Windows resolvió el problema.

Puede hacer esto con una sesión de administrador de Powershell/Símbolo del sistema ejecutando:

net stop hns
net start hns

O puede hacer esto usando el Administrador de servicios de Windows:

Panel de ventana de services.msc con "Servicio de red de host" y su botón asociado "Reiniciar" resaltado

Parsa avatar May 07 '2021 22:05 Parsa

Lo más probable es que el socket esté sostenido por algún proceso. Úselo netstat -opara encontrar cuál.

stark avatar May 05 '2012 12:05 stark