模仿AirAndroid---方便简单的Android手机PC管家

项目内容:一款不需要安装驱动,不需要PC安装软件的Android手机管理软件

谈下我这个项目的思路:

背景:看到同学的一款软件AirAndroid。一款通过网页去管理Android手机的软件(需要跟电脑统一WIFI下),免去了PC机装手机驱动,管理软件等的困扰。于是想到,国内这种软件,少之又少,AirAndroid还有流量限制。于是想自己开发一个。

思路:把手机作为服务器,浏览器作为客户端。浏览器去请求出网页来。由于普通http协议,只支持一次通讯,于是想到了WebSocket。其中WebSocket服务器也在手机中。浏览器将相关动作传给服务器(手机)。服务器执行后,将结果反馈给浏览器。

开发进度:已经把服务器框架搭建好,实现了查看通讯录的功能。后面功能将继续实现。奋斗
websocket服务器-java实现
握手协议之类什么的,看的稀里糊涂。想自己写,实在没看懂。网上找的一个java写的服务器大哭

感谢下大神:hoverlees

下面协议目的:毫无目的可言。就是老师让我讲下我的项目的一些协议,我就从网络上摘抄了些下来。

下面是一些协议,想了解的同学了解下,不想了解就忽略吧。内容挺枯燥的,但我整理完后,发现还是有收获的。

IP协议

  1. Internet体系结构
    一个TCP/IP互联网提供了三组服务。最底层提供无连接的传送服务为其他层的服务提供了基础。第二层一个可靠的传送服务为应用层提供了一个高层平台。最高层是应用层服务。
  2. IP协议: 这种不可靠的、无连接的传送机制称为internet协议。
  3. IP协议三个定义:
    • IP定义了在TCP/IP互联网上数据传送的基本单元和数据格式。
    • IP软件完成路由选择功能,选择数据传送的路径。
    • IP包含了一组不可靠分组传送的规则,指明了分组处理、差错信息发生以及分组的规则。

UDP协议

  • UDP—用户数据报协议,是一个简单的面向数据报的运输层协议。
  • UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。
  • 由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快

TCP协议

TCP—传输控制协议,提供的是面向连接、可靠的字节流服务。
当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。

TCP提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。

TCP连接过程
连接过程分为三个步骤:服务器监听,客户端请求,连接确认。

服务器监听:服务器端套接字处于等待连接的状态,实时监控网络状态,等待客户端的连接请求 。(绑定端口,accpt())

客户端请求:指客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出
连接请求。(绑定服务器地址,端口)

连接确认:当服务器端套接字监听到或者说接收到客户端套接字的连接请求时,就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了此描述,双方就正式建立连接

HTTP协议

HTTP协议永远都是客户端发起请求,服务器回送响应。
这样就限制了使用HTTP协议,无法实现在客户端没有发起请求的时候,服务器将消息推送给客户端。
HTTP协议是一个无状态的协议,同一个客户端的这次请求和上次请求是没有对应关系。

HTTP连接过程
HTTP连接四个步骤:

  1. 连接:Web浏览器与Web服务器建立连接,打开一个称为socket(套接字)的虚拟文件,此文件的建立标志着连接建立成功。
  2. 请求:Web浏览器通过socket向Web服务器提交
  3. 应答:Web浏览器提交请求后,通过HTTP协议传送给Web服务器。Web服务器接到后,进行事务处理,处理结果又通过HTTP传回给Web浏览器,从而在Web浏览器上显示出所请求的页面。
  4. 关闭连接:当应答结束后,Web浏览器与Web服务器必须断开,以保证其它Web浏览器能够与Web服务器建立连接。

HTTP特点

HTTP连接最显著的特点是客户端发送的每次请求都需要服务器回送响应,在请求结束后,会主动释放连接。从建立连接到关闭连接的过程称为“一次连接”。

1)在HTTP 1.0中,客户端的每次请求都要求建立一次单独的连接,在处理完本次请求后,就自动释放连接

2)在HTTP 1.1中则可以在一次连接中处理多个请求,并且多个请求可以重叠进行,不需要等待一个请求结束后再发送下一个请求。

HTTP通讯过程

即时通讯

现很多网站为了实现即时通讯(real-time),所用的技术都是轮询(polling)。轮询是在特定的的时间间隔(time interval)(如每1秒),由浏览器对服务器发出HTTP request,然后由服务器返回最新的数据给客服端的浏览器。这种传统的HTTP request d的模式带来很明显的缺点 – 浏览器需要不断的向服务器发出请求(request),然而HTTP request 的header是非常长的,里面包含的数据可能只是一个很小的值,这样会占用很多的带宽。

而最比较新的技术去做轮询的效果是Comet – 用了AJAX。但这种技术虽然可达到全双工通信,但依然需要发出请求(reuqest)。

WebSocket

WebSocket 是HTML5一种新的协议(protocol)。它是实现了浏览器与服务器全双工通信。

在 WebSocket API,浏览器和服务器只需要要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。在此WebSocket 协议中,为我们实现即时服务带来了两大好处:

  1. Header
    互相沟通的Header是很小的-大概只有 2 Bytes
  2. Server Push
    服务器可以主动传送数据给客户端

WebSocket支持的浏览器

Chrome Supported in version 4+
Firefox Supported in version 4+
Internet Explorer Supported in version 10+
Opera Supported in version 10+
Safari Supported in version 5+

WebSocket服务器

在服务器端,也出现了一些实现websocket协议的项目:

jetty 7.0.1 包含了一个初步的实现
resin 包含有websocket 实现
pywebsocket, apache http server 扩展
apache tomcat 7.0.27 版本
Nginx 1.3.13 版本

websocket api在浏览器端的广泛实现似乎只是一个时间问题了, 值得注意的是服务器端没有标准的api, 各个实现都有自己的一套api, 并且jcp也没有类似的提案, 所以使用websocket开发服务器端有一定的风险.可能会被锁定在某个平台上或者将来被迫升级.


以上摘抄自:百度百科,博客文章等之中