An attempt was made to access a socket in a way forbidden by its access permissions. Why?

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

I don't understand why...it worked and now it doesn't. could someone help me? i am streaming with vlc, and i wan't to receive the packets, do some reports, and then restream local to a player

315541 次浏览

套接字很可能被某个进程占有。使用 netstat -o查找是哪个进程。

使用管理员权限重新加载 VisualStudio。Windows Sockets (WinSock)不允许您在没有本地管理员的情况下创建 SocketType.RAW Socket。请记住,您的解决方案将需要提升的权限才能按预期运行!

我甚至不明白这个问题的罪魁祸首。但对我来说,问题完全不同。我已经尝试运行 netstat -onetstat -ab,两者都显示没有任何应用程序目前正在监听端口62434,这是一个我的应用程序试图监听。所以我很困惑。

我只是试着想想我做了什么,这样它就不工作了(它以前确实工作过)。然后我想到了我在以太网适配器上用一个私有虚拟 LAN (在 Windows 10中使用 Hyper-v)实现的互联网共享。我只需要关闭分享功能,就又能正常工作了。

希望这能帮到其他有同样问题的人。当然,如果有人可以解释这一点,请在你自己的答案中添加更多的细节,或者也许作为一些评论我的答案。

我也有过类似的问题,但是我通过在防火墙设置中做一些修改来解决它。

您可以按照以下步骤操作

  1. 点击“开始”-> “控制面板”

  2. 点击“ Windows 防火墙” enter image description here

  3. 在 Windows 防火墙内,点击“允许程序或特性通过 Windows 防火墙” enter image description here

  4. 现在在允许程序内,点击“更改设置”按钮。单击“更改设置”按钮后,将启用“允许其他程序...”按钮。 enter image description here

  5. 当你点击“允许另一个程序...”按钮,一个新的对话框将会出现。选择要获取套接字异常的程序或应用程序,然后单击“ Add”按钮。

enter image description here

  1. 单击“确定”,然后重新启动计算机。

  2. 尝试使用管理员权限运行应用程序(该应用程序有一个异常)。

希望这个能帮上忙。

这是当 Windows 防火墙阻塞端口(输出端口)时返回的错误。我们有一个严格的网络服务器,所以输出端口是默认阻塞。我所要做的就是创建一个规则来允许 wf.msc 中的 TCP 端口号。

当试图使用 dotnet run 启动一个 dotnet Core 项目时,当它试图绑定到端口时,我遇到了这个问题。

这个问题是由于一个 Visual Studio 2017实例在项目打开的情况下运行造成的——我之前通过 VS 启动项目进行调试,看起来它一直保留着端口,即使调试已经完成,应用程序看起来已经关闭。

关闭 VisualStudio 实例并再次运行“ dotnetrun”解决了这个问题。

在命令窗口中运行 iisreset为我修复了它。

当我在两个不同的 Visual Studio 实例中有两个不同的 ASP.net 项目时,也会发生同样的错误。
关闭其中一家公司解决了这个问题。

我在 Azure 上的一个 Web 应用程序中尝试连接到 Blob Storage 时遇到了这个问题。问题在于我错过了为 blob 存储部署连接字符串,所以它仍然指向存储模拟器。客户机中肯定内置了一些重试逻辑,因为我看到了大约3次尝试。这里的 /devstorageaccount1完全暴露了。

enter image description here

通过在 Azure 中正确设置连接字符串修正了这个问题。

我正在开发一个 UWP 应用程序,它连接到局域网中的一个 MQTT 代理。

MQTTnet.Exceptions.MqttCommunicationException: 'An attempt was made to access a socket in a way forbidden by its access permissions [::ffff:xxx.xxx.xxx.xxx]:1883'


ExtendedSocketException: An attempt was made to access a socket in a way forbidden by its access permissions [::ffff:xxx.xxx.xxx.xxx]:1883

结果发现我忘了给应用程序正确的功能..。 enter image description here

IIS 是我的主要问题。我的 IIS 正在运行,它限制任何新的套接字连接打开。 通过运行命令“ iisreset -stop”停止 IIS,我解决了这个问题

除此之外,如果使用 Docker,则 Docker 可能是此问题的原因。如果是这样,您必须通过执行以下命令重新启动 主机网络服务。您可能需要提高执行此命令的访问权限 “ net stop hns && net start hns

我重新启动了这个服务: Windows Services程序上的 Host Network Service

您可以在 Windows 终端中运行这些命令,就像@admin 在注释部分提到的那样:

net stop hns
net start hns

当一个进程使用一个端口时,它不能被另一个进程使用。netstat -o显示进程正在使用的端口。

或者,也可以将端口排除在使用之外。在这种情况下,没有进程可以使用它们。您可以通过 netsh interface ipv4 show excludedportrange protocol=tcp查看列表

我刚刚遇到了一个类似的问题,来自 Xamarin Forms 应用程序,它通过 HttpClient 对 Azure 进行出站调用。

在我的案例中,问题的根本原因是我的安全套件 BitDefender 阻止了我的应用程序的出站访问,因为它认为这是一个威胁。

我已经为这个应用程序的防火墙添加了一个异常,它已经解决了这个问题。

正如 Gonnagle所指出的,这可能是由于已安装的 VPN 客户端处于连接状态造成的。对我们来说,从 VPN 断开连接解决了这个问题。

我解决了使用相同端口停止在机器上运行的服务的安装版本的问题。

或者,使用不同的端口运行调试实例。