Android socket 服务端

Android

想在Android 上跑一个 socket 服务端。把在java工程里运行起来的代码直接放到android项目里来,开启线程,创建ServerSocket对象,创建对象的时候报错了。

W/System.err( 3998): java.net.SocketException: socket failed: EACCES (Permission denied)

W/System.err( 3998): at libcore.io.IoBridge.socket(IoBridge.java:583)

W/System.err( 3998): at java.net.PlainSocketImpl.create(PlainSocketImpl.java:201)

W/System.err( 3998): at java.net.PlainServerSocketImpl.create(PlainServerSocketImpl.java:38)

W/System.err( 3998): at java.net.ServerSocket.(ServerSocket.java:98)

W/System.err( 3998): at java.net.ServerSocket.(ServerSocket.java:69)

W/System.err( 3998): at com.binkery.http.server.HttpServer.run(HttpServer.java:34)

W/System.err( 3998): at java.lang.Thread.run(Thread.java:864)

W/System.err( 3998): Caused by: libcore.io.ErrnoException: socket failed: EACCES (Permission denied)

W/System.err( 3998): at libcore.io.Posix.socket(Native Method)

W/System.err( 3998): at libcore.io.BlockGuardOs.socket(BlockGuardOs.java:181)

W/System.err( 3998): at libcore.io.IoBridge.socket(IoBridge.java:568)

W/System.err( 3998): ... 6 more

缺少权限的问题。

加上权限之后,一直出现这个问题,很郁闷。

W/System.err( 4232): java.net.BindException: bind failed: EACCES (Permission denied)

W/System.err( 4232): at libcore.io.IoBridge.bind(IoBridge.java:89)

W/System.err( 4232): at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:150)

W/System.err( 4232): at java.net.ServerSocket.(ServerSocket.java:100)

W/System.err( 4232): at java.net.ServerSocket.(ServerSocket.java:69)

W/System.err( 4232): at com.binkery.http.server.HttpServer.run(HttpServer.java:34)

W/System.err( 4232): at java.lang.Thread.run(Thread.java:864)

W/System.err( 4232): Caused by: libcore.io.ErrnoException: bind failed: EACCES (Permission denied)

W/System.err( 4232): at libcore.io.Posix.bind(Native Method)

W/System.err( 4232): at libcore.io.ForwardingOs.bind(ForwardingOs.java:39)

W/System.err( 4232): at libcore.io.IoBridge.bind(IoBridge.java:87)

W/System.err( 4232): ... 5 more

后来在stackoverflow.com 上找到了答案,百度不给力啊,关键时候还是google,google能search到这些答案,百度很无力啊。

这个是链接:

http://stackoverflow.com/questions/2694797/bindexception-with-internet-permission-requested

原因呢,是端口号不能低于1024,据说是Linux的问题。这个待考证吧。

Either root your phone, modify the firmware, or don't bind to ports lower than 1024. That's a Linux thing more than an Android thing.

我本来打算用80端口的,结果不能用。我用无参的构造器的时候,也没有给我返回一个自动分配的端口。

我觉得这个问题还是有可能通过其他方式解决的。80端口除非被占用了,不然还是能有办法搞到手的。现在只能老习惯,9527占用端口了。

mServer = new ServerSocket(9527);

有个地方搞错了。刚才看了一眼API,无参的ServerSocket() 返回一个未绑定ServerSocket , 使用ServerSocket(0) 才是返回系统自动分配的端口。

不过还没有找到关于1024的问题。

2016.12.13 更新

比较悲剧的是,多年以后 google 问题 google 到自己当年写的破玩意~~

上面的问题都是比较初级的问题了,一个是没有权限,一个是端口号的问题。端口号确实是不能少于 1024 的,1024 以下被定义为保留端口,所有一般不能使用。当然是一般不能使用了,说明还是有办法的,这里就不讨论了(主要我也不知道~~)。

最近我又再次碰见 socket failed: EACCES (Permission denied) 的问题,但这次可以肯定的是 application 的权限是有的,而且是正确的,因为我这是在一个正在运行的线上的商业项目中的,这种低级的问题是不能的。但是在错误日志的收集中还是看见了若干这样的报错,感觉有些困惑。

鉴于只是少量用户碰见这样的问题,大概的推测为兼容性问题,一直以来,Android 的网络权限都是安装时授权的,不管是6.0之前还是 6.0 之后,所以当运行的时候碰见因为网络权限拒绝的问题,大概可以确定是部分机型的兼容性问题。

部分机型,特别是国内机型,在设置里会有针对每个应用单独的网络权限控制,在国内目前高昂的流量资费的大背景下,很多机型都提供给用户可以为每个应用设置网络权限的方式,还有可以分别设置 wlan 或者数据。

相关文章

- EOF -

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动。

转载请注明:文章转载自 Binkery 技术博客 [https://binkery.com]

本文标题: Android socket 服务端

本文地址:https://binkery.com/archives/266.html

android socket 服务端,Android socket 服务端相关推荐

  1. android socket通信如何抓取,安卓Socket通信实例(客户端、服务端)

    安卓Socket通信实例 本文摘自:https://whatsblog.icu/index.php/Android/17.html 1.Socket通信必须知道的地方 1.首先,Socket通信采用T ...

  2. Android和服务端通过Socket收发文字图片的实现

    今天总结一下Android客户端和服务端通过Socket收发文字和图片的实现方式: 关于网络通信的基础知识这边就不赘述了,网上多的是,今天主要写一下实现的部分: 简单的描述Sokcket的通信主要有一 ...

  3. mfc作为服务端,android作为客服端进行socket通讯,android在wifi下手机与电脑的socket通信...

    在 wifi 局域网下,手机可以和电脑通过 socket 通信.手机做服务端,电脑做客户端:也可 以反过来,电脑做服务端,手机做客户端. 下面介绍的是手机作为服务端,电脑使用 MFC 编程作为客户端, ...

  4. android模拟器socket服务端,android 模拟器跟电脑服务器端用socket通讯

    android 模拟器和电脑服务器端用socket通讯 之前一直会用sockets来实现emulator和PC进行通讯,卡了几天,最后请教其他人终于可以连接了.  错误原因是在IP和端口,IP要用本机 ...

  5. python实现socket编程,客户端和服务端之间互相对话(二)

    首先运行服务端,处于监听状态: 最后运行客户端,就可以实现服务端和客户端之间互相发送消息. 客户端: import os import cv2 import socketremote_IP='127. ...

  6. 使用C++的Socket实现从客户端到服务端,服务端到客户端传输文件

    使用: (1)首先运行服务端,待服务端运行起来: (2)最后运行客户端,输入要传输文件到哪个目标机器的IP地址: (3)输入传输文件的路径及文件(完成的路径),其中包含文件的类型,也就是后缀需要包含( ...

  7. 【Android 逆向】Android 逆向通用工具开发 ( 网络模块开发 | SOCKET 网络套接字初始化 | 读取远程端 “Android 模拟器“ 信息 | 向远程端写出数据 )

    文章目录 前言 一.SOCKET 网络套接字初始化 二.SOCKET 网络套接 读取远程端 ( Android 模拟器 ) 信息 三.SOCKET 网络套接 向远程端 ( Android 模拟器 ) ...

  8. c# WINFORM SOCKET编程-简单聊天程序(服务端)

    初学C#的SOCKET编程,照着网上的代码写下来,程序总是有问题,经过自己长时间的调试,完成程序,以下是原码,有需要可以参考一下,还不完善,欢迎大家批评指正.(这里的代码没更新,附件重新上传更新,在另 ...

  9. Netty的Socket编程详解-搭建服务端与客户端并进行数据传输

    场景 Netty在IDEA中搭建HelloWorld服务端并对Netty执行流程与重要组件进行介绍: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article ...

最新文章

  1. html5 canvas 不兼容safari浏览器_HTML5的介绍
  2. 同时在一个WebService服务中发布多个普通Java类
  3. 2020-10-03
  4. Spring Cloud面试题
  5. dedecms代码研究三
  6. 思考、学习新技术的原则和方式
  7. linux 软路由_软路由和硬路由的区别分析
  8. MySql 中文乱码问题
  9. python写连点脚本_python鼠标连点器-测试版
  10. Docker 清理数据卷 volumes
  11. NAO机器人姿势切换
  12. 黎曼Zeta函数,人类文明黎曼Zeta函数,人类文明永恒的的纪念
  13. 汕头大学计算机转专业,2021年汕头大学大一新生转专业及入学考试相关规定
  14. dw2017不显示动画_10个创建2017年动画视频的最佳工具
  15. 最好的 QML 教程,让你的代码飞起来!
  16. 【面试】上海 java开发工程师/自动化测试开发工程师 面试题
  17. python 入门总结(一)
  18. String为什么要用equals而不用==?
  19. 才聚PMP进阶|项目管理实战分享会圆满结束
  20. 完全卸载Office

热门文章

  1. Linux上搭建Samba,实现windows与Linux文件数据同步
  2. Android之Unexpected error while executing: am start -n “***.Activity“-a android.intent.action.MAIN
  3. Android之Andorid studio 解决Error:Configuration with name ‘default‘ not found
  4. 《假如编程是魔法之零基础看得懂的Python入门教程 》——(六)精简魔法更强大
  5. python组件介绍_python 中的爬虫· scrapy框架 重要的组件的介绍
  6. 甘肃2019年9月计算机二级报名入口,2019年9月甘肃计算机二级考试成绩查询入口...
  7. jq取第一个子元素为select_【转】jquery如何获取第一个或最后一个子元素?
  8. 装×失败的后果。。。 | 今日最佳
  9. 每日一笑 | 程序员的日常,这也太真实了......
  10. 兄dei,Python数据竞赛和5万现金奖励了解一下