android 无法绑定 1024 以下端口

简介: android 无法绑定 1024 以下端口

平台


RK3288 + Android 7.1


问题


android 应用无法绑定 < 1024 的端口号.


void tryBind80Port(){
        new Thread(){
            @Override
            public void run() {
                try {
                    InetSocketAddress addr = new InetSocketAddress(80);//以80测试
                    ServerSocket ss = new ServerSocket();
                    ss.bind(addr);
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }.start();
    }


报错LOG


2017-01-01 20:03:11.998 2762-2778/com.ansondroider.appshortcut W/System.err: java.net.BindException: Permission denied
2017-01-01 20:03:11.998 2762-2778/com.ansondroider.appshortcut W/System.err:     at java.net.PlainSocketImpl.socketBind(Native Method)
2017-01-01 20:03:11.998 2762-2778/com.ansondroider.appshortcut W/System.err:     at java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:368)
2017-01-01 20:03:11.998 2762-2778/com.ansondroider.appshortcut W/System.err:     at java.net.ServerSocket.bind(ServerSocket.java:377)
2017-01-01 20:03:11.998 2762-2778/com.ansondroider.appshortcut W/System.err:     at java.net.ServerSocket.bind(ServerSocket.java:331)
2017-01-01 20:03:11.998 2762-2778/com.ansondroider.appshortcut W/System.err:     at com.ansondroider.appshortcut.MainActivity$1.run(MainActivity.java:39)


解决


参考:https://www.linuxquestions.org/questions/linux-networking-3/allowing-non-root-to-bind-to-ports-1024-a-350437/


//kernel/include/net/sock.h
        /* Sockets 0-1023 can't be bound to unless you are superuser */
          #define PROT_SOCK 1024


文件中已声明, 0 - 1023 端仅 SU用户能使用.
    所以, 修改的方法只是也是把限制的端口号改低或直接改为0.


PS: 个人并不建议去修改这个端口号, 最好还是APP能够申请其它端口, 这样也会少一些冲突


相关文章
|
6月前
|
Python
Python网络编程基础(Socket编程)绑定地址和端口
【4月更文挑战第9天】在UDP服务器编程中,我们首先需要创建一个UDP套接字,然后绑定一个本地地址和端口,以便客户端可以通过这个地址和端口与我们的服务器进行通信。下面,我们将详细讲解如何绑定地址和端口。
|
6月前
|
数据安全/隐私保护 时序数据库
InfluxData【部署 03】时序数据库 InfluxDB 离线安装配置使用(下载+安装+端口绑定+管理员用户创建+开启密码认证+开机自启配置)完整流程实例分享
InfluxData【部署 03】时序数据库 InfluxDB 离线安装配置使用(下载+安装+端口绑定+管理员用户创建+开启密码认证+开机自启配置)完整流程实例分享
405 0
|
6月前
|
XML Java Android开发
Android Studio App开发之服务Service的讲解及实战(包括启动和停止,绑定与解绑,推送服务到前台实现音乐播放器,附源码)
Android Studio App开发之服务Service的讲解及实战(包括启动和停止,绑定与解绑,推送服务到前台实现音乐播放器,附源码)
807 0
|
5月前
|
Android开发 Kotlin
Android面试题 之 Kotlin DataBinding 图片加载和绑定RecyclerView
本文介绍了如何在Android中使用DataBinding和BindingAdapter。示例展示了如何创建`MyBindingAdapter`,包含一个`setImage`方法来设置ImageView的图片。布局文件使用`&lt;data&gt;`标签定义变量,并通过`app:image`调用BindingAdapter。在Activity中设置变量值传递给Adapter处理。此外,还展示了如何在RecyclerView的Adapter中使用DataBinding,如`MyAdapter`,在子布局`item.xml`中绑定User对象到视图。关注公众号AntDream阅读更多内容。
94 1
|
6月前
|
网络协议
TCP和UDP可以绑定同样的端口吗?
TCP和UDP可以绑定同样的端口吗?
|
6月前
|
网络协议
绑定地址和端口
【4月更文挑战第4天】创建socket对象后,需将其绑定到特定地址和端口。根据服务器需求,地址可选localhost(仅本机服务)、实际IP地址(公开服务)或空字符串(所有地址)。端口号应避开0-1023的保留范围。使用`bind()`方法绑定地址和端口,如`sock.bind((&#39;&#39;, 12345))`。绑定可能遇到错误,需用异常处理机制捕获,确保程序稳定。
|
12月前
|
安全 Linux Docker
当zmq 和 docker 都要绑定一个端口时,怎么不修改端口号就能解决冲突?
主机模式运行docker 容器 要使用主机模式运行Docker容器,你可以在运行Docker命令时使用--network=host选项。这将使容器共享主机的网络命名空间,意味着容器将直接使用主机的网络,而不是虚拟的网络。
109 0
|
监控 Android开发 开发者
Android平台GB28181设备接入端本地SIP端口被占用或屏蔽怎么办?
好多开发者或厂商,对Android平台GB28181接入模块的定位,大多是IPC国标流程打通模拟,基于这个目的,很难按照标准SPEC规范实现Android平台GB28181设备接入,我们在跟第三方国标平台厂商对接时发现,部分公司,尽管参与了标准的制定或审校,自身实现,细节仍不尽人意。
100 0
|
Python
【从零学习python 】74. UDP网络程序:端口问题与绑定信息详解
【从零学习python 】74. UDP网络程序:端口问题与绑定信息详解
211 0
|
机器人
服务机器人绑定雷达端口和绑定底盘步骤
服务机器人绑定雷达端口和绑定底盘步骤
87 0