gpt4 book ai didi

android - 在 native 可执行文件 (android) 中绑定(bind) TCP 端口失败

转载 作者:可可西里 更新时间:2023-11-01 02:44:40 24 4
gpt4 key购买 nike

我正在尝试使用 rtmpgw在本地端口上设置流,使用 videoview 或其他视频播放器访问。我已经设置了 native 可执行文件并且它正在运行,但是当我使用命令测试它时

rtmpgw --sport 8080

它返回以下错误:

HTTP-RTMP Stream Gateway v2.4
(c) 2010 Andrej Stepanchuk, Howard Chu; license: GPL

ERROR: startStreaming, TCP bind failed for port number: 8080
ERROR: Failed to start HTTP server, exiting!

这发生在我尝试过的任何端口上。如果没有 --sport 参数,它会尝试端口 80 并失败。据我了解,非特权/非 root 用户不能在 unix 中绑定(bind)低于 1024 的端口。既然是虚拟机,有什么不同吗? native 可执行文件/静态二进制文件不会在虚拟机外部执行吗?

代码:

File rtmp = new File(getFilesDir() + "/rtmpgw");
ProcessBuilder pb = new ProcessBuilder("./" + rtmp.getName(), "--sport", "8080");
pb.directory(getFilesDir());
Process stream = pb.start();

最佳答案

感谢您的回复。事实证明,高于端口 1024 并不是唯一的要求。它需要落在 ephemeral port range 中.为了获取临时端口范围,我执行了命令

root@android:/ # cat /proc/sys/net/ipv4/ip_local_port_range
cat /proc/sys/net/ipv4/ip_local_port_range
32768 61000

我不确定该范围在所有 Android 设备上的一致性如何,但我的 native 可执行文件在给定临时范围内的端口时成功启动。

关于android - 在 native 可执行文件 (android) 中绑定(bind) TCP 端口失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14077907/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com