基于安卓的数据通信系统设计(3)

1.3本课题的主要内容 在PC端搭建模拟环境和运行环境,利用eclipse在PC端完成客户端和服务器端的编写,在客户端中,要建立起用户界面,明确用户要使用的


1.3 本课题的主要内容

在PC端搭建模拟环境和运行环境,利用eclipse在PC端完成客户端和服务器端的编写,在客户端中,要建立起用户界面,明确用户要使用的功能,用户界面要尽可能简洁明了,要求服务端能够不断监听来自客户端的连接请求,检测客户端能否将数据上传到本机的服务器,再将客户端移植到手机上,检测客户端能否与PC端的服务器完成信息的交互。 

2 网络通信基础

2.1 TCP/IP基础

TCP/IP 协议全称为传输控制协议/因特网互联协议,又叫网络通信协议,是Internet最重要的协议之一,由网络层的IP和传输层的TCP组成[3]。TCP/IP规范了电子设备应该如何连入因特网,还有就是数据怎样在它们之间传输的标准。TCP/IP协议与OSI模型不同,它采用了四层的层级结构,每一层都呼叫它的下一层所提供的有关协议来完成自己的需求。也就是说,TCP负责发现传输过程中出现的问题,一旦发现问题便发出信号要求从新传输,直到所有数据正确无误传输到目的地。而IP的功能是给因特网中的每一台计算机都定义一个地址。

TCP/IP并不是TCP和IP这两个协议简单的合称,而是指因特网中整个的TCP/IP协议族,TCP/IP由四个层次组成,并不完全符合OSI的七层参考模型,其参考模型如下:

图2.1 OSI模型与TCP/IP模型

TCP/IP是一种很可靠的网络协议,并且它被广泛使用,它能够在通信的双方各建立一个Socket,这样就能在通信的双方之间形成网络虚拟链路。而一旦建立了虚拟的网络链路,双方的程序就可以通过这条虚拟链路进行通信,Java语言对TCP网络通信进行了良好的封装,并通过Socket对象可以代表双方的通信端口,并且能够通过Socket产生的I/O流进行网络通信。TCP协议是面向连接的运输层协议,它能提供可靠交付的服务和双工通信,它的首部格式如表1所示。

表2.1 TCP的协议格式

源端口号(16) 目的端口号(16)

序列号(32)

确认应答号(32)

数据偏移(4) 保留(6) 代码位(6) 窗口(16)

校验和(16) 紧急指针

选项(长度可变) 填充

数据部份(长度可变)

2.2 Socket

2.2.1 ServletSocket

在Java编程语言中,在使用ServerSocket类接受其他通信实体的连接请求时,监听来自客户端的Socket连接是对象ServerSocket的需要完成的功能,在没有连接的情况下会处于等待状态,在类ServerSocket中包含了如下监听客户端连接请求的方法。Socket accept():如果一个客户端Socket的连接请求被它接收到,一个与客户端Socket对应的Socket将被该方法将返回,否则该方法将一直处于等待状态了,线程也将一直阻塞。为了创建ServerSocket对象,ServerSocket类提供了如下构造器。ServerSocket(int port):用需要的端口port创建一个ServerSocket,这一个端口有一个有效的端口整数值:0到65535。

2.2.2 Socket的使用

Socket两种主要的操作方式:面向连接的和无连接的。Socket是面向连接的,它的操作就好比是一部电话,必须在建立一个连接和一个呼叫的情况下才可以传输信息。所有的信息到达时的顺序与它们在传输出发时的顺序是一样的。Socket无连接的操作就可以看做一个邮件投递,不能保证它的安全,大量邮件抵达时的顺序有可能与出发时的顺序不一致的。而在模式的选择上,应由应用程序的需要决定的。在应用程序中可靠性更重要的话,会优先考虑用面向连接的操作。比如正确性和有序性对那些需要数据的文件服务器很重要,一旦一些数据丢失了,这些系统将会失去它们的有效性。而另外一些服务器,它们的数据块是间歇性发送的,在数据丢失的情况下,服务器并不想要再重新再发一次这些数据,因为数据到达的时候,它可能已经过时了。而为了确保数据的有序性和正确性,需要额外的操作,这些额外的操作会带来内存消耗,系统的回应速率也将因为额外的费用将会被降低。