C# 试图以受访问权限限制的方式访问套接字。为什么? private void StartReceivingData(字符串ipAddress,int iPort) { 尝试 { 如果(!\u b继续接收) { //初始化邮箱(ipAddress,iPort); _mSocket=new Socket(AddressFamily.InterNetwork,SocketType.Raw,ProtocolType.IP);//
该套接字很可能由某个进程持有。使用C# 试图以受访问权限限制的方式访问套接字。为什么? private void StartReceivingData(字符串ipAddress,int iPort) { 尝试 { 如果(!\u b继续接收) { //初始化邮箱(ipAddress,iPort); _mSocket=new Socket(AddressFamily.InterNetwork,SocketType.Raw,ProtocolType.IP);//,c#,sockets,video,streaming,C#,Sockets,Video,Streaming,该套接字很可能由某个进程持有。使用netstat-o查找哪个套接字。以管理员权限重新加载Visual Studio。Windows套接字(WinSock)在没有本地管理员的情况下,将不允许您创建SocketType.RAW套接字。请记住,您的解决方案需要提升权限才能按预期运行!我甚至不了解此问题的原因。但在我的情况下,问题完全不同。我已尝试运行netstat-o或netstat-ab,两者都是现在没有任何应用程序正在我的应用程序尝试监听的端口62434上监听。所以我真的很困惑 我只是试着想想我做
netstat-o
查找哪个套接字。以管理员权限重新加载Visual Studio。Windows套接字(WinSock)在没有本地管理员的情况下,将不允许您创建SocketType.RAW套接字。请记住,您的解决方案需要提升权限才能按预期运行!我甚至不了解此问题的原因。但在我的情况下,问题完全不同。我已尝试运行netstat-o
或netstat-ab
,两者都是现在没有任何应用程序正在我的应用程序尝试监听的端口62434上监听。所以我真的很困惑
我只是试着想想我做了什么,结果它停止了工作(它以前确实工作过)。然后我想到了我在我的以太网适配器上用一个专用虚拟局域网(在Windows 10中使用Hyper-v)进行的Internet共享。我只需要关闭共享,它就又正常工作了
希望这能帮助其他有同样问题的人。当然,如果有人能解释这一点,请在您自己的答案中添加更多详细信息,或者作为对我的答案的一些评论。我有一个类似的问题,但我通过对防火墙设置进行一些更改来修复它 您可以按照以下步骤操作
Sunny Makode这是Windows防火墙阻止端口(外出)时返回的错误。我们有一个严格的web服务器,因此默认情况下会阻止传出端口。我所要做的就是创建一个规则,允许在wf.msc中使用TCP端口号。我在尝试使用dotnet启动dotnet Core项目时遇到了这个问题,当它尝试绑定到端口时运行dotnet 该问题是由一个Visual Studio 2017实例在项目打开的情况下运行引起的-我以前通过VS启动项目进行调试,它似乎保留了端口,即使调试已完成,应用程序似乎已关闭
关闭Visual Studio实例并再次运行“dotnet run”解决了问题。在命令窗口中运行
iisreset
为我解决了问题。当我在两个不同的Visual Studio实例中有两个不同的ASP.net项目时,我遇到了相同的错误。关闭其中一个解决了此问题。我在尝试连接到Blob存储时在Azure上的Web应用程序中遇到此问题。问题是我没有为Blob存储部署连接字符串,因此它仍然指向存储模拟器。客户端中一定内置了一些重试逻辑,因为我看到了大约3 at尝试。这里的
/devStorage Account1
是一个绝妙的赠品
通过在Azure中正确设置连接字符串进行修复。我正在开发一个UWP应用程序,该应用程序连接到LAN中的MQTT代理。我遇到了类似的错误
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);
}
}
结果是我忘了给应用程序正确的功能。。。
IIS是我的罪魁祸首。我的IIS正在运行,它会阻止任何新的套接字连接打开。
通过运行命令“
iisreset-stop
”我在windowsServices
程序上重新启动了此服务:主机网络服务
,该问题为我解决了。它起了作用。Sysinternals还可以帮助检查是否被另一个进程使用(正如我刚才遇到的那样)如果异常发生在BIND,这对我来说是有意义的。因为它发生在CREATE,那么我希望您需要成为管理员才能创建原始套接字。遗憾的是,在我的情况下,我的应用程序尝试侦听端口62434,但使用netstat-o
检查侦听端口时,显示当前没有任何应用程序占用端口62434帽子端口。这真是让我发疯。你是在运行防火墙还是iptables规则来阻止端口?还有,你的应用程序是以什么用户的身份运行的?它实际上是netstat-ao
,包括开放供监听的端口,或者netstat-ano
如果你想保存DNS查找,或者netstat-ano | find]:80“
如按端口过滤#80如果在创建时发生异常,我希望您需要以管理员身份运行以创建原始套接字。高度相关,如果不是重复的话,我已看到AV的一个块,此异常:>02/01/2017 15:02:18被端口阻塞规则F:\Program>Files\AccessLayers\PortNox\Bi阻塞n\PortNoxSvc.exe反病毒标准>保护:防止群发邮件蠕虫发送邮件x.x.x:25尝试使用小于10000的另一个端口进行测试这发生在我尝试手动运行作为netcore API的exe时。是IIS使端口保持打开状态。然而,接受的答案没有解释为什么在创建。它将解释为什么在绑定时发生异常。@pquest-不同意您的评论
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