基于Android 的移动即时通讯系统的设计与实现

2016-03-07 12:57朱浩悦侯敏
电脑知识与技术 2015年34期
关键词:多线程即时通讯编程

朱浩悦 侯敏

摘要:该课题主要研究基于Android的移动即时通讯系统,该系统以使用户获得更好的用户体验性为目的,并力求做到界面简洁、用户易操作。该系统的主要功能:用户注册、登录、好友一对一聊天。该即时通讯工具采用多线程原理,数据传输通过socket编程实现。

关键词:Android;socket 编程;多线程;即时通讯

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2015)34-0106-02

Abstract: The main research topic of this paper is the mobile instant messaging system based on Android, This system is aiming at making users acquire better user experience, and striving to make concise interface, making users easy to operate. The main functions of this instant messaging system are user registration, login, one-to-one chat between friends. The instant messaging tool uses multi thread principle, and data transmission in this Instant Messenger is accomplished by socket programming.

Key words: Android; socket programming; multi-threaded; Instant Messaging

以前,人们的信息交流是通过电话、信件、电报等手段,由于功能的局限给收发双方带来了很多不便。更加即时直观,且能在网上识别在线用户并与他们实时交换消息的即时通讯技术应运而生,它是电子邮件发明以来迅速崛起的在线通讯方式,为网络用户提供一个实时交流聊天的平台。即时通讯和社会化网络、统一通信、在线协同三大技术热点的关系越来越密切已经构成融合发展的趋势。开发技术现已非常成熟的网络通信工具一般采用UDP或者TCP协议体系来实现,比如较早的MSN即时通讯软件,还有国产的有名的QQ,阿里旺旺这些工具统统都实现了广域网上的即时通信、即时聊天,以及文件传输的主要功能,但是也各有各的特色,MSN的个性化表情,QQ方便的屏幕截图功能,阿里旺旺则专为淘宝买卖双方提供服务。这些软件在使用方面各有特色,在实现方面也各有所长,但基于这些产品正在商业运营阶段,其实现方式属于商业机密,具体细节不可能得知。与此同时,基于Android平台的手机应用程序的出现,及其具有众多出色的品质,如应用无界限、应用程序轻松嵌入网络、应用程序可并行运行等,Android 手机平台的应用越来越广泛,应用的需求也越来越强烈,因此,开展对移动设备的即时通讯系统的研究是十分必要的。

1 系统功能及主要工具

Android的上层应用程序的开发是在Eclipse开发环境中进行的,运用Java语言开发,同时还需要基于Android虚拟机,并安装JDK、SDK、ADT等插件。SDK 实质就是一个工具包,包含创建和运行Android应用程序所必需的工具集合;而Android SDK采用了Java语言,所以还必须先安装JDK插件;为了使Eclipse能与Android SDK进行连接,我们还必须安装ADT。数据库采用了SQL SERVER 2008,数据库中的每个数据结构对应Java语言中的一个类Class,并在该类中没有基本的Get/Set方法。程序从数据库提取和存储数据都会将数据封装成一个Java对象Class,然后通过SQL语句完成对数据库的操作。通过Java封装的类Class对象,来对前台界面和后台界面提供数据,达到在前后台界面显示用户所需要的信息。

本系统共分为三个模块。注册模块:注册模块包括个人信息的填写、验证与提交。登录模块:登录模块包括个人账户与密码的正确填写以及后台的验证提示信息。聊天模块:聊天模块中有个人好友列表也有群组聊天。

2 多线程Socket网络编程

系统通讯的主要技术采用的是基于Java的多线程Socket网络编程,Android手机端将组装好的数据包通过无线网络发送到服务器。每一个在线用户占用独立的线程与服务器进行交互,用户首先将信息发送到服务器,服务器解析信息,对Android端提交的数据进行处理然后将信息转发给相应的用户并在客户端显示。使用线程可以把占据长时间的程序中的任务放到后台去处理,这样比如用户点击了一个按钮去触发某个事件的处理,可以弹出一个进度条用来显示处理的进度,程序的运行速度可能加快,用户界面可以更加吸引人。

Socket通信是网络中计算机进行通信的一种方法。应用程序通过调用系统提供的Socket库函数很容易实现网络里计算机的通信。首先搭建基于Socket的C/S结构设计的核心骨架,服务端和客户端,同时在使用Socket进行通信的过程中,对于两端的端口号要一致。客户端的程序使用Socket类建立负责连接到服务器的套接字对象。Socket的构造方法是Socket(String host,int port),参数host是服务器的IP地址,port是一个端口号。建立套接字可能会发生IoException异常,因此需要捕获异常。在客户端建立一个Socket需如下步骤:1)通过系统调用Socket()建立一个Socket。2)通过系统调用Connect()将Socket和服务器的地址连接起来。3)发送和接收消息,有很多方法可以实现这个功能,最简单的是使用系统调用read()和write()。在服务器端建立一个Socket需如下步骤:1)通过系统调用socket()建立一个 Socket。2)通过系统调用bind()将Socket绑定到一个地址,对于一个Internet上的 Socket,这个地址是由主机和端口号组成的。3)通过系统调用listen()监听是否有客户端的连接。4)通过系统调用accept()受理一个请求。5)发送和接收消息。

3 系统实现及结果展示

对整个系统划分的三个子系统,我们依次进行流程描述。首先,用户进入注册界面,按照相关提示输入信息,信息经封装后由服务器接收处理并给用户返回注册的qq号。用户根据界面提示输入相关信息,信息先在客户端进行格式判断后封装传递给服务器进行验证,最后返回相应信息。用户登录成功后,选择好友进行聊天,服务器对数据进行封装以及转发。

服务器端实现了三个具体功能:登录信息:检查登录信息是否正确,并向客户端返回信息,如信息正确就将在线用户发给该用户,并将该用户的状态发给在线客户。同时在服务器端显示出来。聊天信息:转发给消息指定的客户。申请信息:自动分配用户密码,并保存该用户,同时将信息返回给客户端。

用户登录界面如图1所示:

猜你喜欢
多线程即时通讯编程
编程,是一种态度
元征X-431实测:奔驰发动机编程
编程小能手
纺织机上诞生的编程
民事诉讼中即时通讯记录的证据采用进路
即时通讯软件发展模型的实证研究
Java并发工具包对并发编程的优化
基于多线程文件传输关键技术研究与实现
网页爬虫技术的关键技术研究探索
一种基于多线程的高速磁盘镜像算法