标题 | 基于Android平台的即时通信系统设计 |
范文 | 雷文礼等![]() ![]() 摘 要: 随着Internet与移动通信的飞速发展及相互融合,通过无线网络高速接入到Internet成为现实,即时通信软件作为一种便捷的网络通信工具,其应用范围从单纯的网络聊天工具逐渐变成工作生活所不可缺的信息交流平台。采用Socket网络编程设计,在Android平台下实现了基于TCP/IP协议的网络通信系统。实验测试证明,系统运行正常,可以实现在Android平台上的即时通信功能。 关键词: Android; 即时通信; 网络; Socket 中图分类号: TN915.4?34 文献标识码: A 文章编号: 1004?373X(2015)03?0013?03 Design of instant communication system based on Android platform LEI Wen?li, REN Xin?cheng, ZHANG Dong, GAO Ying (College of Physics and Electronic Information, Yanan University, Yanan 716000, China) Abstract: With the rapid development and mutual fusion of Internet and mobile communication, it comes true for the network communication system to access the Internet through high?speed wireless network. As a kind of convenient network communication tool, the instant messaging software has gradually turned into indispensable platform for the exchange of information in work and life from the simple network chat tool. The network communication system based on TCP/IP protocol was realized on the platform of Android, which uses the Socket network programming. The experiment and testing show that the system runs well, and can achieve real?time communication function on Android platform. Keywords: Android; instant communication; network; Socket 0 引 言 随着移动通信技术的快速发展,人们对移动终端的功能需求也日益增高。即时通信软件作为网络用户通信交流不可或缺的工具,从单纯的网络聊天工具逐渐变成工作生活的信息交流平台,即时通信的用户规模也呈现出快速增长的趋势[1]。本文采用Socket网络编程设计,在Android平台下实现了基于TCP/IP协议的网络通信系统。本系统的设计方案为后期相关通信系统设计提供了部分技术参考,并具有一定的应用价值[2]。 1 Android平台 Android是一个由Linux+Java构成的开源的移动设备软件平台,它是基于Linux内核的系统,具有良好的可移植性 [3?4]。Android平台的框架结构从上至下包含了五个部分:应用程序(Applications)、应用框架(Application Framework)、开发库(Libraries)、运行时环境(Android Runtime)以及Linux内核(Linux Kernel),可方便地为应用程序提供系统调用,为应用程序的开发提供了便利。 2 系统设计 Android系统中的网络通信可以通过四种方法实现: (1) 可以调用JDK中的相关网络通信的API函数[5]实现。 (2) 基于ServerSocket和Socket方法创建TCP/IP协议的网络通信。 (3)通过DatagramSocket和MulticastSocket创建UDP协议的网络通信。 (4)通过JDK中提供的URL等网络通信API来实现,这种方法采用在Android系统内置HTTPClient,发送HTTP请求,获取HTTP响应的方式使得通信得以实现。 本文采用上述第(2)种方法实现网络通信。 2.1 用ServerSocket创建TCPClient 在系统中,服务器端通过ServerSocket类监听是否有客户端发出Socket连接请求,若没有,则一直处于等待状态;若有,则进行后续相应操作。ServerSocket类通过Socket accept()函数实现监听网络中客户端的连接请求[6]。 Socket accept()函数,如果监听到有客户端发出的Socket连接请求,则连接;若没有监听到,则进入等待状态。 ServerSocket类通过以下几个构造器来创建ServerSocket对象: (1) ServerSocket(int port)函数,通过指定的某一个端口port号创建一个ServerSocket。端口号的有效数字在0~65 535之间。 (2) ServerSocket(int port,int backlog)函数,在参数中增加backlog,可以用来改变队列长度。 (3) ServerSocket(int port,int backlog,InetAddress localAddr)函数,在参数中增加InetAddress和localAddr,用于在机器存在多个IP地址的情况下,将其绑定到指定的IP地址。 当系统中Socket通信结束后,可以用ServerSocket中的close()函数关闭该终端的Socket通信。 在某一时刻,服务器可能不仅会监听到一个客户端的连接请求,当有多个客户端的连接请求时,服务器应该能处理所有客户端的连续请求。本文中服务器端的实验程序运行在PC上,服务器与客户机端的Socket通信如图1所示。 图1 服务流程图 当使用Socket进行通信时,客户端程序可以通过以下两个Socket的构造器连接到指定服务器端。 (1)Socket(InetAddress/String remoteAddress,int port):用于创建一个连接到指定远程主机、远程端口的 Socket,该函数中使用本地主机默认IP地址进行连接。 (2)Socket(InetAddress/String remoteAddress,int port, InetAddress localAddr, int localPort):用于创建一个连接到指定远程主机和远程端口的Socket,该函数中指定了本地IP地址和使用的端口号。 以上两个构造器中指定的远程主机,可以使用InetAddress表示,也可通过用String对象表示。在程序中,一般使用String对象表示远程IP地址。同时,比较上述两种方法,在本地主机只有一个IP地址的情况下,第一个方法由于使用默认的IP地址,无需指定,因此更为简单。如以下代码所示: Socket s=new Socket(“192.168.12.59”, 30000); //创建连接到本机,30000 端口的 Socket 当客户端程序运行上面的代码时,客户端程序将连接到指定服务器端,服务器端的ServerSocket类中的accept方法将开始向下执行,这样在服务器端和客户端就产生了用于互相连接的Socket通信。 客户端与服务器端建立了Socket之后,就可以相互进行通信。当需要获取输入流和输出流时,Socket可以通过以下两种方法来实现。 (1)InputStream getInputStream():函数将返回该Socket对象对应的输入流,程序可以通过该输入流取出需要的数据。 (2)OutputStream getOutputStream():函数将返回该Socket对象对应的输出流,程序可以通过该输出流输出数据。 2.2 加载工程文件 打开 Android 集成开发环环境并加载工程文件:选择任务栏的“file??>import”导入项目文件,从常规(General)文件的选项中选择已经存在的项目到工作区 接着,选择“Select root directory”选项,通过浏览文件夹功能选择服务器或者客户端程序目录,这里选择“EX02_08/tcp/JavaServer”,同时勾选“Copy project into workspace”复制到工作区,按下“确定”按钮,再选择“Finish”按钮即可。 加载完工程后,在 Workspace 里找到 JavaServer工程,右击工程名,选择 Run As?>Java Application,运行 JavaServer 程序。如图3所示。 3 系统测试 本文在模拟器中对程序进行测试,操作如下:右键项目名称?>run as?>Android Application,这样即可启动运行该Android程序,如图5所示。 在发送框中输入“5554”,如图6所示。 输入完后,点击发送按钮,这时下面的 TextView 文本框中将显示从服务器发送过来的数据。如图7所示。 参考文献 [1] 张辉,曹丽娜.现代通信原理与技术[M].西安:西安电子科技大学出版社,2005. [2] 何忠龙,陈萱华,曹迎槐.多媒体通信技术[M].北京:北京希望电子出版社,2006. [3] 王晓军,毛京丽.计算机通信网[M].北京:北京邮电出版社,2007. [4] 肖杰,谭庆平.基于J2EE的Web构件平台的设计[J].长沙大学学报,2005,19(3):43?47. [5] 田小波,陈蜀宇.MVC设计模式在J2EE架构下的研究与应用[J].西华大学学报,2007(2):33?35. [6] 高振东.基于J2EE平台的EJB技术研究与应用[J].航空计算技术,2003,33(1):28?32. |
随便看 |
|
科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。