android端作为服务器与其他设备通讯记录总结

android的app作为服务端首先其实要考虑保活的问题,但是这个暂不考虑,程序挂了就通讯不上了,再重新打开就是了,经过测试,在启动server之后让app进入后台,程序还是可以存活几个小时的(没有测试更长的时间,注意,这是在不开其他app的情况下,在开其他app的情况下有时进程会被kill)。

这里的通讯主要是在电脑端通过curl发送命令(url),然后android端处理数据并返回结果。

curl是利用URL语法在命令行方式下工作的开源文件传输工具。

这里我下载的是window下可执行程序curl,是在一个人分享到网盘的。在官网我没有找到可执行的curl,只找到了源码(要编译的)。虽然下面有人家的window端的下载链接,但是我之前没有找到(后面终于找到了)。

进这个网站

https://curl.haxx.se/download.html

一直往下拖。下这个。

这是盗图的

我是win7  64位,因此使用I386下的curl.exe工具。

cmd进入控制台,然后通过cd命令进入到curl.exe所在的目录。

进入到该目录后,执行curl --help测试。

这是盗图的

出现这些信息就表示curl可用。

试试输入这个,看是否能正常通讯。

curl https://www.baidu.com/

至此,curl可用,下面开始设置服务端。


git上有一些开源库可以用Nanohttpd、AndServer。

我之前用的Nanohttpd好像有点问题后来就弃用了(应该是我的锅。不过我还是感觉这个是用于java的我,因为我记得运行sample响应ok,但是上传文件好像有点问题,缺乏某些类),然后就用了AndServer。

AndServer地址:

https://github.com/yanzhenjie/AndServer

通过运行sample可以大致了解通讯的过程。

至于具体怎么添加到自己的项目中,在gradle中添加依赖,然后将sample中的代码copy到自己的项目中即可。

compile'com.yanzhenjie:andserver:1.0.3'

app运行之后,打开server,然后就可以进行通讯了。

比如,上传,命令如下:

curl -F "filename=@你好.txt" http://192.168.3.169:8080/upload

192.168.3.169是android设备的ip地址,8080是端口号。(本质是socket通讯?这方面我没有深入了解,http通讯?)


在测试上传功能过程中发现一个问题,包含中文字符的文件名传输到android端之后显示的是乱码(英文则不会出现此问题)。

上传文件默认保存在sdcard目录下。

解决方法:

在RequestUploadHandler类中设置传输的格式,具体代码:

fileUpload.setHeaderEncoding("gbk");


然后进行格式转换之后才能得到正确的中文字。

String s =newString(fileItem.getName().getBytes(),"UTF-8");

上传成功后会返回ok。

格式不一致然后导致了乱码(具体原因待分析,这是我偶然尝试上传gbk格式的中文然后发现此时android设备中的文件名没有乱码发现的)。


关于登录,demo中默认账号和密码为123。

if("123".equals(userName) &&"123".equals(password)) 

因此,发送命令。

curl -d "userName=123&password=123" http://192.168.3.169:8080/login



参考链接:

windows(64位)下使用curl命令

http://blog.csdn.net/wangchao729251283/article/details/54628826

Curl windows下载地址

http://blog.csdn.net/hongweigg/article/details/51728220


android充当server服务器

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,638评论 25 708
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,009评论 19 139
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,259评论 4 61
  • 明天必定来临 (原发凯迪文化散论) 任何力量也无法阻挡 明天的来临 犹如江河奔向大海 任何障碍都不能遏止 奔腾的渴...
    临风而立tr阅读 237评论 2 5
  • 我的一个朋友失恋了,这一次是彻底的失恋了。似乎,再没了挽回的余地。 这一天的天气是阴暗的,上海的天空中还飘着雨。我...
    琦纳笙阅读 866评论 0 0