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进行流式传输,我不会收到数据包,做一些报告,然后在本地重新播放播放器
答案 0 :(得分:43)
套接字很可能是由某个进程持有的。使用netstat -o
查找哪一个。
答案 1 :(得分:37)
使用管理员权限重新加载Visual Studio。 Windows套接字(WinSock)将不允许您创建没有本地管理员的SocketType.RAW套接字。请记住,您的解决方案需要提升权限才能按预期运行!
答案 2 :(得分:15)
我在 Windows Host Network Service
程序上重新启动了此服务:Services
。它奏效了。
感谢@admin,您可以改为在 Windows 终端中运行这些命令:
net stop hns
net start hns
答案 3 :(得分:14)
我甚至不明白这个问题的罪魁祸首。但就我而言,问题完全不同。我尝试过运行netstat -o
或netstat -ab
,两者都显示当前没有任何应用正在侦听端口62434,这是我的应用尝试收听的应用。所以这对我来说真的很困惑。
我只是试着想一想我做了什么让它停止工作(之前确实有效)。那么我想到了我在以太网适配器上使用私有虚拟局域网(在Windows 10中使用Hyper-v)进行的Internet共享。我只需要关闭共享,它再次正常工作。
希望这有助于其他人遇到同样的问题。当然,如果有人能够解释这一点,请在您自己的答案中添加更多细节,或者作为对我的答案的一些评论。
答案 4 :(得分:6)
在尝试绑定到端口时使用dotnet run启动dotnet Core项目时遇到了这个问题。
问题是由在项目打开的情况下运行Visual Studio 2017实例引起的-我以前是通过VS启动项目进行调试的,尽管调试已完成并且应用程序似乎已关闭。
关闭Visual Studio实例并运行“ dotnet run”再次解决了该问题。
答案 5 :(得分:2)
这是Windows防火墙阻止端口(out-going)时返回的错误。我们有一个严格的Web服务器,因此默认情况下会阻止传出端口。我所要做的就是创建一个规则来允许wf.msc中的TCP端口号。
答案 6 :(得分:1)
我遇到了类似的问题,但我通过对防火墙设置进行了一些更改来修复它。
您可以按照以下步骤
答案 7 :(得分:0)
当我的电脑升级到Windows 10周年纪念日时,我开始收到一个非常类似的错误,并且有效地消除了我的所有设置。这就像使用新计算机,第一次使用所有内容一样...然后我的代码试图使用Web服务时突然出现此错误。
但真正的罪魁祸首,我的案例中的解决方案是我需要检查以64位运行的选项。这种选择在我的案例中已经丢失。
工具 - &gt;选项 - &gt;项目和解决方案 - &gt;网络项目 - &gt; &#34;将64位版本的IIS Express用于网站和项目&#34;。
答案 8 :(得分:0)
在命令窗口中运行iisreset
为我修复了该问题。
答案 9 :(得分:0)
当我在两个不同的Visual Studio实例中拥有两个不同的ASP.net项目时,发生了相同的错误。
关闭其中一个即可解决此问题。
答案 10 :(得分:0)
尝试连接到Blob存储时,我在Azure上的Web应用程序中遇到了此问题。问题原来是我错过了为Blob存储部署连接字符串,因此它仍然指向存储模拟器。客户端必须内置一些重试逻辑,因为我看到了3次尝试。 /devstorageaccount1
简直就是死了。
通过在Azure中正确设置连接字符串来解决。
答案 11 :(得分:0)
我正在开发一个UWP应用程序,该应用程序连接到LAN中的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
答案 12 :(得分:0)
IIS是我的主要犯罪者。我的IIS正在运行,它禁止打开任何新的套接字连接。
通过运行命令“ iisreset -stop
”来停止IIS,为我解决了该问题