APP下载

基于Android平台的即时通信系统设计

2015-02-21雷文礼任新成张栋高瑛

现代电子技术 2015年3期
关键词:监听服务器端网络通信

雷文礼,任新成,张栋,高瑛

(延安大学物理与电子信息学院,陕西延安716000)

基于Android平台的即时通信系统设计

雷文礼,任新成,张栋,高瑛

(延安大学物理与电子信息学院,陕西延安716000)

随着Internet与移动通信的飞速发展及相互融合,通过无线网络高速接入到Internet成为现实,即时通信软件作为一种便捷的网络通信工具,其应用范围从单纯的网络聊天工具逐渐变成工作生活所不可缺的信息交流平台。采用Socket网络编程设计,在Android平台下实现了基于TCP/IP协议的网络通信系统。实验测试证明,系统运行正常,可以实现在An⁃droid平台上的即时通信功能。

Android;即时通信;网络;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 accep(t)函数实现监听网络中客户端的连接请求[6]。

Socket accep(t)函数,如果监听到有客户端发出的Socket连接请求,则连接;若没有监听到,则进入等待状态。

ServerSocket类通过以下几个构造器来创建Server⁃Socket对象:

(1)ServerSocke(tint port)函数,通过指定的某一个端口port号创建一个ServerSocket。端口号的有效数字在0~65 535之间。

(2)ServerSocke(tint 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/StringremoteAddress,int port):用于创建一个连接到指定远程主机、远程端口的Socket,该函数中使用本地主机默认IP地址进行连接。

(2)Socket(InetAddress/StringremoteAddress,int port,InetAddress localAddr,int localPort):用于创建一个连接到指定远程主机和远程端口的Socket,该函数中指定了本地IP地址和使用的端口号。

以上两个构造器中指定的远程主机,可以使用InetAddress表示,也可通过用String对象表示。在程序中,一般使用String对象表示远程IP地址。同时,比较上述两种方法,在本地主机只有一个IP地址的情况下,第一个方法由于使用默认的IP地址,无需指定,因此更为简单。如以下代码所示:

当客户端程序运行上面的代码时,客户端程序将连接到指定服务器端,服务器端的ServerSocket类中的accept方法将开始向下执行,这样在服务器端和客户端就产生了用于互相连接的Socket通信。

客户端与服务器端建立了Socket之后,就可以相互进行通信。当需要获取输入流和输出流时,Socket可以通过以下两种方法来实现。

(1)InputStream getInputStream():函数将返回该Socket对象对应的输入流,程序可以通过该输入流取出需要的数据。

(2)OutputStream getOutputStream():函数将返回该Socket对象对应的输出流,程序可以通过该输出流输出数据。

2.2 加载工程文件

打开Android集成开发环环境并加载工程文件:选择任务栏的“file⁃⁃>import”导入项目文件,从常规(General)文件的选项中选择已经存在的项目到工作区(Existing Projects into Workspace),如图2所示。

图2 加载工程文件

接着,选择“Select root directory”选项,通过浏览文件夹功能选择服务器或者客户端程序目录,这里选择

“EX02_08/tcp/JavaServer”,同时勾选“Copy project into workspace”复制到工作区,按下“确定”按钮,再选择“Finish”按钮即可。

加载完工程后,在Workspace里找到JavaServer工程,右击工程名,选择Run As⁃>Java Application,运行JavaServer程序。如图3所示。

图3 运行JavaServer程序

2.3 配置应用程序

右键项目⁃>Run as⁃>Run Configuration进入如图4所示界面。在该界面中,点击Browse按钮,选择要运行的项目。然后选择Target切换到后续界面,选择运行的AVD,将AVD前面的方框设置为选择状态。点击Run。

图4 配置界面图

3 系统测试

本文在模拟器中对程序进行测试,操作如下:右键项目名称⁃>run as⁃>Android Application,这样即可启动运行该Android程序,如图5所示。

在发送框中输入“5554”,如图6所示。

输入完后,点击发送按钮,这时下面的TextView文本框中将显示从服务器发送过来的数据。如图7所示。

图5 模拟器运行界面

图6 发送界面图

图7 接收界面图

测试结果表明,该系统运行正常,可以实现在Android平台上的即时通信功能。

[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.

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,Yan’an University,Yan’an 716000,China)

With the rapid development and mutual fusion of Internet and mobile communication,it comes true for the net⁃work communication system to access the Internet through high⁃speed wireless network.As a kind of convenient network commu⁃nication 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.

Android;instant communication;network;Socket

TN915.4⁃34

A

1004⁃373X(2015)03⁃0013⁃03

雷文礼(1982—),男,讲师。主要研究方向为无线通信技术、通信终端设计。

2014⁃08⁃19

延安市科学技术研究发展计划项目(2014KG⁃04);陕西省教育厅科研计划项目资助(14JK1829);陕西省科学技术研究发展计划项目(工业攻关)(2014K05⁃61);国家自然科学基金(61379026)

猜你喜欢

监听服务器端网络通信
Linux环境下基于Socket的数据传输软件设计
千元监听风格Hi-Fi箱新选择 Summer audio A-401
基于网络通信的智能照明系统设计
网络通信中信息隐藏技术的应用
基于网络通信的校园智能音箱设计
浅析异步通信层的架构在ASP.NET 程序中的应用
谈计算机网络通信常见问题及技术发展
网络监听的防范措施
基于Qt的安全即时通讯软件服务器端设计
应召反潜时无人机监听航路的规划