如何解决Delphi+Android下Indy Socket Error #13权限拒绝异常
解决Socket Error #13 Access Denied(TIdSimpleServer监听问题)
最直接的修复:更换监听端口
Android 10及更高版本(包括你使用的Android 11)禁止普通应用使用1024以下的特权端口,你当前设置的55端口属于这类受限端口,这才是权限拒绝的核心原因,和你添加的INTERNET权限无关。
把端口改成1024以上的数值即可,比如5555:
IdSimpleServer.Port := 5555; IdSimpleServer.Listen(20000);
额外配置建议
- 绑定正确的网络地址:如果需要接收外部设备发来的文件,确保
TIdSimpleServer绑定到所有可用网卡,而不是仅本地回环地址。可以添加以下代码:IdSimpleServer.Bindings.Clear; with IdSimpleServer.Bindings.Add do begin IP := '0.0.0.0'; Port := 5555; end; - 后台监听的权限补充:如果你的APP需要在后台持续监听文件传输,需在AndroidManifest.xml中添加前台服务权限:
同时将APP运行在前台服务中,避免Android 11的后台限制切断网络连接。<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
无关权限清理
你添加的ACCESS_NETWORK_STATE权限和Socket监听功能无关,完全可以从清单文件中移除,不会影响功能。
内容的提问来源于stack exchange,提问作者alvaroc
相关产品推荐
相关产品推荐

