109
 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 进行流式传输,我不想接收数据包,做一些报告,然后在本地重新流式传输到播放器

4

14 回答 14

142

我重新启动了此服务:Host Network Service在 WindowsServices程序上。它奏效了。

您可以在 Windows 终端中运行这些命令,正如评论部分中提到的 @admin :

net stop hns
net start hns
于 2021-05-07T22:13:51.147 回答
111

套接字很可能由某个进程持有。用于netstat -o查找哪一个。

于 2012-05-05T12:46:46.853 回答
55

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

于 2015-03-03T17:31:26.973 回答
31

好吧,我什至不明白这个问题的罪魁祸首。但就我而言,问题完全不同。我尝试运行netstat -onetstat -ab,两者都表明当前没有任何应用程序正在侦听端口 62434,这是我的应用程序尝试侦听的端口。所以这对我来说真的很困惑。

我只是试着想想我做了什么,所以它停止了工作(它以前确实工作过)。然后我想到了我在以太网适配器上使用私有虚拟 LAN 进行的 Internet 共享(在 Windows 10 中使用 Hyper-v)。我只需要关闭共享,它就可以再次正常工作。

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

于 2015-11-22T19:41:29.520 回答
12

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

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

于 2020-11-15T06:42:36.420 回答
9

我在尝试绑定到端口时尝试使用 dotnet run 启动 dotnet Core 项目时遇到了这个问题。

问题是由在项目打开的情况下运行 Visual Studio 2017 实例引起的 - 我之前通过 VS 启动项目进行调试,它似乎一直在保留端口,即使调试已经完成并且应用程序似乎已关闭.

关闭 Visual Studio 实例并再次运行“dotnet run”即可解决问题。

于 2018-09-10T10:50:06.553 回答
7

我遇到了类似的问题,但我通过对防火墙设置进行了一些更改来解决它。

您可以按照以下步骤

  1. 转到“开始”->“控制面板”

  2. 点击“Windows防火墙” 在此处输入图像描述

  3. 在 Windows 防火墙中,单击“允许程序或功能通过 Windows 防火墙” 在此处输入图像描述

  4. 现在在允许程序中,单击“更改设置”按钮。单击更改设置按钮后,将启用“允许另一个程序...”按钮。 在此处输入图像描述

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

在此处输入图像描述

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

  2. 尝试使用管理权限运行您的应用程序(有一个例外)。

我希望这有帮助。

于 2016-12-27T06:36:11.710 回答
4

这是 Windows 防火墙阻止端口(传出)时返回的错误。我们有一个严格的 Web 服务器,因此默认情况下会阻止传出端口。我所要做的就是创建一个规则以允许 wf.msc 中的 TCP 端口号。

于 2017-05-09T15:29:24.253 回答
2

尝试连接到 Blob 存储时,我在 Azure 上的 Web 应用程序中遇到了这个问题。问题原来是我错过了为 blob 存储部署连接字符串,所以它仍然指向存储模拟器。客户端中必须有一些重试逻辑,因为我看到了大约 3 次尝试。这/devstorageaccount1是一个死的赠品。

在此处输入图像描述

通过在 Azure 中正确设置连接字符串来修复。

于 2019-10-11T18:57:24.993 回答
2

我正在开发一个连接到 LAN 中的 MQTT 代理的 UWP 应用程序。我遇到了类似的错误。

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

原来我忘了给应用程序正确的功能...... 在此处输入图像描述

于 2020-05-29T07:36:42.890 回答
1

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

于 2018-10-15T14:35:09.837 回答
1

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

就我而言,问题的根本原因是我的安全套件 BitDefender 阻止了我的应用程序的出站访问,因为它认为这是一种威胁。

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

于 2021-10-15T20:06:51.093 回答
0

当我在两个不同的 Visual Studio 实例中有两个不同的 ASP.net 项目时,我遇到了同样的错误。
关闭其中一个解决了这个问题。

于 2019-05-10T02:34:59.000 回答
0

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

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

于 2021-09-14T07:03:56.387 回答