Подтвердить что ты не робот

была предпринята попытка получить доступ к сокету способом, запрещенным его правами доступа. Зачем?

 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);
        }
    }

Я не понимаю, почему... это сработало, и теперь это не так. может кто-нибудь мне помочь? я потоковый с vlc, и я не хочу получать пакеты, делать некоторые отчеты, а затем перезаписывать локально для игрока

4b9b3361

Ответ 1

Скорее всего, сокет удерживается каким-то процессом. Используйте netstat -o, чтобы найти, какой из них.

Ответ 2

Перезапустите Visual Studio с правами администратора. Windows Sockets (WinSock) не позволит вам создавать SocketType.RAW Socket без локального администратора. И помните, что вашему решению потребуются повышенные привилегии для запуска, как ожидалось!

Ответ 3

Хорошо, я даже не понимаю виновника этой проблемы. Но в моем случае проблема совершенно другая. Я попытался запустить netstat -o или netstat -ab, оба показывают, что в настоящее время не прослушивается какое-либо приложение на порту 62434, которое пытается прослушивать мое приложение. Так что это действительно запутывает меня.

Я просто попытался подумать о том, что сделал, чтобы он прекратил работать (раньше это работало). Ну, тогда я подумал о совместном использовании Интернета, которое я сделал на своем Ethernet-адаптере, с частной виртуальной локальной сетью (используя Hyper-v в Windows 10). Мне просто нужно было отключить обмен, и он снова работал отлично.

Надеюсь, это поможет кому-то другому, имеющему ту же проблему. И, конечно, если кто-то может это объяснить, добавьте больше деталей в свой собственный ответ или, возможно, в качестве комментария к моему ответу.

Ответ 4

У меня была эта проблема, когда я пытался запустить проект ядра dotnet с помощью запуска dotnet, когда он пытался привязаться к порту.

Проблема была вызвана тем, что экземпляр Visual Studio 2017 работал с открытым проектом - я ранее запускал проект с помощью VS для отладки, и кажется, что он держался за порт, даже если отладка была завершена и приложение казалось закрытым,

Закрытие экземпляра Visual Studio и запуск "запуска по сети" снова решили проблему.

Ответ 5

Это ошибка, которая возвращается, когда брандмауэр Windows блокирует порт (исходящий). У нас есть строгий веб-сервер, поэтому исходящие порты блокируются по умолчанию. Все, что мне нужно было сделать, это создать правило, позволяющее номер порта TCP в wf.msc.

Ответ 6

У меня была аналогичная проблема, но я исправил ее, выполнив некоторые изменения в настройках брандмауэра.

Вы можете выполнить следующие шаги

  • Перейдите в раздел "Пуск" → "Панель управления"
  • Нажмите "Брандмауэр Windows" введите описание изображения здесь

  • Внутри брандмауэра Windows нажмите "Разрешить программу или функцию через брандмауэр Windows" введите описание изображения здесь

  • Теперь в окне "Разрешить программы" нажмите "Изменить настройки". После нажатия кнопки "Изменить параметры" активируется кнопка "Разрешить другую программу...". введите описание изображения здесь

  • Нажмите кнопку "Разрешить другую программу...", откроется новое диалоговое окно. Выберите программы или приложения, для которых вы получаете исключение сокета, и нажмите кнопку "Добавить". введите описание изображения здесь

  • Нажмите "ОК" и перезагрузите компьютер.

  • Попробуйте запустить приложение (имеющее исключение) с правами администратора.

Надеюсь, это поможет.

Мир,

Солнечный Макод

Ответ 7

Я начал получать очень похожую ошибку, когда мой компьютер обновился до добавления к Windows 10 годов, и эффективно сдул все мои настройки. Это было похоже на работу с новым компьютером, настройку для первого использования... и вдруг я получил эту ошибку, когда мой код пытался использовать веб-службу.

Но реальный виновник, и решение в моем случае состояло в том, что мне нужно было проверить вариант для запуска в 64-разрядной версии. Этот выбор был утерян в моем случае.

Инструменты → Параметры → Проекты и решения → Веб-проекты → "Используйте 64-разрядную версию IIS Express для веб-сайтов и проектов".

Ответ 8

Запуск iisreset в командной строке исправил это для меня.

Ответ 9

У меня была такая же ошибка, когда у меня было два разных проекта ASP.net в двух разных экземплярах Visual Studio.
Закрытие одного из них устранило проблему.

Ответ 10

Я столкнулся с этим в веб-приложении на Azure при попытке подключиться к хранилищу BLOB-объектов. Проблема оказалась в том, что я пропустил развертывание строки подключения для хранилища больших двоичных объектов, поэтому оно все еще указывало на эмулятор хранилища. Должна быть некоторая логика повторения, встроенная в клиент, потому что я видел около 3 попыток. /devstorageaccount1 здесь - мертвая распродажа.

enter image description here

Исправлено путем правильной настройки строки подключения в Azure.