分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.youkuaiyun.com/jiangjunshow
也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!
本文背景:局域网内手机与手机利用wifi建立tcp连接,通过socket互传照片。即一个手机当作服务器,另一个手机是客户端,客户端可以看到服务器指定文件夹内的图片缩略图,并选择下载到本机。另外,客户端会显示本地某个文件夹内的图片缩略图,并选择上传到服务器。总而言之本例中图片的发送和接收都是双向的。除发送图片外,还含有字符串(图片的名字)、文件夹内图片的个数(刷新适配器)的发送。
众所周知,android常用的网络开发无外乎http和socket,其中http是应用层的协议,tcp是传输层。所以,http也是用socket封装的,用起来更方便。由于是封装过的,它提供了更强大的功能。socket又分为TCP和UDP,局域网内TCP速度就很快了,鉴于局域网内传送东西不需要考虑流量,所以此种场合多用socket。首先看下本例的运行效果:
下面是客户端初始界面:
点击下载后进入下载界面,服务器就开始给客户端传缩略图和图片的名字了,如下:
选择需要下载的图片:
点击确定按钮后,服务器就开始给客户端传大图了,就是原始图片,传输完毕后,弹出提示框:
点击上面的确定后,就自动结束当前activity,返回到初始界面,就不附图了。
下面是客户端的上传界面,将图片上传到服务器上,这个没啥难的,就是本地图片生成缩略图填充到listview上,不涉及到网络部分。其传输,跟服务器往客户端传东西是一样的。:
最后来看下服务器,由于服务器没任何UI上的要求,所以就是些简单的log打印:
本以为很简单的一个功能,但网上大多数是手机是客户端,PC是服务端。虽然都是流传输,但服务器在PC和手机上解析成图片还是不大一样的,中间走了很多弯路才搞定,另外,就是网上大多是简单的收发,本例中既要传输图片个数、图片名字等,客户端牵涉到切换到activity,要多个socket链接,还是有些麻烦的。下面把开发中遇到的问题、开发要点和步骤记录下来。
1、权限问题
这里包括WIFI权限,Internet权限和文件读写权限。我第一次的时候权限没添加完,来来回回折腾了好几次。服务器和客户端的权限是一样的.