You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Win11下WiFiDirectServices无法建立TCP StreamSocket连接求助

解决Wi-Fi Direct Services中TCP StreamSocket连接权限问题的可行方案

检查UWP应用网络权限配置

  • 确保应用的Package.appxmanifest中已声明**专用网络(客户端和服务器)**权限,而非仅公共网络权限。Wi-Fi Direct属于专用网络场景,权限缺失会直接导致连接拦截。
  • 确认Capability节点包含以下配置:
    <Capability Name="privateNetworkClientServer" />
    <Capability Name="internetClientServer" />
    

调整StreamSocketListener绑定策略

  • 避免手动指定固定端口,改用BindServiceNameAsync("")让系统自动分配端口,再调用WiFiDirectServiceSession.AddStreamSocketListenerAsync完成注册。手动指定端口可能触发Wi-Fi Direct的权限校验冲突,或与系统预留端口重叠。
  • 绑定完成后,通过StreamSocketListener.Information.LocalPort获取实际分配的端口,确保RemotePortAdded事件传递的端口信息准确。

修正ConnectAsync调用参数

  • 在RemotePortAdded事件处理中,直接使用事件参数提供的RemoteHostName和RemoteServiceName调用ConnectAsync,不要自行构造EndpointPair。Wi-Fi Direct会话的内部主机名有专属权限校验逻辑,手动构造会导致权限验证失败。
  • 示例代码片段:
    private async void RemotePortAdded(WiFiDirectServiceSession sender, WiFiDirectServiceRemotePortAddedEventArgs args)
    {
        var socket = new StreamSocket();
        try
        {
            await socket.ConnectAsync(args.RemoteHostName, args.RemoteServiceName);
            // 连接成功后的业务逻辑
        }
        catch (Exception ex)
        {
            // 错误处理逻辑
        }
    }
    

检查Wi-Fi Direct虚拟适配器配置

  • 打开控制面板 > 网络和共享中心 > 更改适配器设置,找到名为Wi-Fi Direct Virtual Adapter的虚拟网卡。
  • 右键选择属性,确认Microsoft网络客户端和Microsoft网络服务器已启用,且未被第三方安全软件限制。

重置WinSock与网络栈

  • 以管理员身份打开命令提示符,执行以下命令重置网络底层配置:
    netsh winsock reset
    netsh int ip reset
    
  • 重启设备后重新测试,该操作可解决多数底层网络权限或配置冲突问题。

我在Win11设备上测试微软Wi-Fi Direct Services示例时,按上述步骤调整后成功建立了TCP StreamSocket连接。若问题仍存在,可尝试卸载并重新部署UWP示例,确保应用权限配置被正确加载。

内容的提问来源于stack exchange,提问作者Ling Chen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 15:30:41