Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 试图以受访问权限限制的方式访问套接字。为什么? private void StartReceivingData(字符串ipAddress,int iPort) { 尝试 { 如果(!\u b继续接收) { //初始化邮箱(ipAddress,iPort); _mSocket=new Socket(AddressFamily.InterNetwork,SocketType.Raw,ProtocolType.IP);//_C#_Sockets_Video_Streaming - Fatal编程技术网

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共享。我只需要关闭共享,它就又正常工作了


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

我有一个类似的问题,但我通过对防火墙设置进行一些更改来修复它

您可以按照以下步骤操作

  • 转到“开始”->“控制面板”
  • 单击“Windows防火墙”

  • 在Windows防火墙内部,单击“允许程序或功能通过Windows防火墙”

  • 现在在允许程序内部,单击“更改设置”按钮。单击更改设置按钮后,“允许另一个程序…”按钮将启用。

  • 单击“允许另一个程序…”按钮,将打开一个新对话框。选择要获取套接字异常的程序或应用程序,然后单击“添加”按钮。

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

  • 尝试使用管理权限运行应用程序(存在异常)

  • 我希望这有帮助

    和平


    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

    我在windows
    Services
    程序上重新启动了此服务:
    主机网络服务
    ,该问题为我解决了。它起了作用。

    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