Ответ 1
Скорее всего, сокет удерживается каким-то процессом. Используйте netstat -o
, чтобы найти, какой из них.
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, и я не хочу получать пакеты, делать некоторые отчеты, а затем перезаписывать локально для игрока
Скорее всего, сокет удерживается каким-то процессом. Используйте netstat -o
, чтобы найти, какой из них.
Перезапустите Visual Studio с правами администратора. Windows Sockets (WinSock) не позволит вам создавать SocketType.RAW Socket без локального администратора. И помните, что вашему решению потребуются повышенные привилегии для запуска, как ожидалось!
Хорошо, я даже не понимаю виновника этой проблемы. Но в моем случае проблема совершенно другая. Я попытался запустить netstat -o
или netstat -ab
, оба показывают, что в настоящее время не прослушивается какое-либо приложение на порту 62434, которое пытается прослушивать мое приложение. Так что это действительно запутывает меня.
Я просто попытался подумать о том, что сделал, чтобы он прекратил работать (раньше это работало). Ну, тогда я подумал о совместном использовании Интернета, которое я сделал на своем Ethernet-адаптере, с частной виртуальной локальной сетью (используя Hyper-v в Windows 10). Мне просто нужно было отключить обмен, и он снова работал отлично.
Надеюсь, это поможет кому-то другому, имеющему ту же проблему. И, конечно, если кто-то может это объяснить, добавьте больше деталей в свой собственный ответ или, возможно, в качестве комментария к моему ответу.
У меня была эта проблема, когда я пытался запустить проект ядра dotnet с помощью запуска dotnet, когда он пытался привязаться к порту.
Проблема была вызвана тем, что экземпляр Visual Studio 2017 работал с открытым проектом - я ранее запускал проект с помощью VS для отладки, и кажется, что он держался за порт, даже если отладка была завершена и приложение казалось закрытым,
Закрытие экземпляра Visual Studio и запуск "запуска по сети" снова решили проблему.
Это ошибка, которая возвращается, когда брандмауэр Windows блокирует порт (исходящий). У нас есть строгий веб-сервер, поэтому исходящие порты блокируются по умолчанию. Все, что мне нужно было сделать, это создать правило, позволяющее номер порта TCP в wf.msc.
У меня была аналогичная проблема, но я исправил ее, выполнив некоторые изменения в настройках брандмауэра.
Вы можете выполнить следующие шаги
Внутри брандмауэра Windows нажмите "Разрешить программу или функцию через брандмауэр Windows"
Теперь в окне "Разрешить программы" нажмите "Изменить настройки". После нажатия кнопки "Изменить параметры" активируется кнопка "Разрешить другую программу...".
Нажмите кнопку "Разрешить другую программу...", откроется новое диалоговое окно. Выберите программы или приложения, для которых вы получаете исключение сокета, и нажмите кнопку "Добавить".
Нажмите "ОК" и перезагрузите компьютер.
Попробуйте запустить приложение (имеющее исключение) с правами администратора.
Надеюсь, это поможет.
Мир,
Солнечный Макод
Я начал получать очень похожую ошибку, когда мой компьютер обновился до добавления к Windows 10 годов, и эффективно сдул все мои настройки. Это было похоже на работу с новым компьютером, настройку для первого использования... и вдруг я получил эту ошибку, когда мой код пытался использовать веб-службу.
Но реальный виновник, и решение в моем случае состояло в том, что мне нужно было проверить вариант для запуска в 64-разрядной версии. Этот выбор был утерян в моем случае.
Инструменты → Параметры → Проекты и решения → Веб-проекты → "Используйте 64-разрядную версию IIS Express для веб-сайтов и проектов".
Запуск iisreset
в командной строке исправил это для меня.
У меня была такая же ошибка, когда у меня было два разных проекта ASP.net в двух разных экземплярах Visual Studio.
Закрытие одного из них устранило проблему.
Я столкнулся с этим в веб-приложении на Azure при попытке подключиться к хранилищу BLOB-объектов. Проблема оказалась в том, что я пропустил развертывание строки подключения для хранилища больших двоичных объектов, поэтому оно все еще указывало на эмулятор хранилища. Должна быть некоторая логика повторения, встроенная в клиент, потому что я видел около 3 попыток. /devstorageaccount1
здесь - мертвая распродажа.
Исправлено путем правильной настройки строки подключения в Azure.