基于Socket的Android聊天室系统设计与实现

2014-08-07 12:08胡晶晶
微处理机 2014年4期
关键词:聊天室服务端服务器端

胡晶晶

(湖南生物机电职业技术学院,长沙410126)

基于Socket的Android聊天室系统设计与实现

胡晶晶

(湖南生物机电职业技术学院,长沙410126)

Android是一种基于Linux V2.6内核的自由及开放源代码的智能手机操作平台;Socket是一种网络编程接口。介绍了Android基于Socket的通信机制,建立了一个基于Socket的Android聊天室系统。其中Android平台的手机作为客户端,PC作为服务器端。该系统能够实现登录、注册、公聊、私聊、文件传送等功能。

套接字Socket;安卓Android;聊天室;客户端;服务器

1 引 言

Android是一种基于Linux V2.6内核的自由及开放源代码的操作系统,主要用于移动设备。随着移动互联网的迅猛发展,Android已占据全球智能手机操作系统市场 3/4以上的份额。聊天室是Android手机不可或缺的网络通信应用程序之一,而Socket机制是一种API,是进行网络通信编程的接口。介绍了Android基于Socket的通信机制,建立了一个基于Socket的Android聊天室系统,提出了在C/S模式下用Socket实现Android聊天室系统的解决方案。

2 Android系统架构

Android是一个分层的系统架构,构建在Linux内核基础上。Android分为四个层次,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和Linux内核层。Android软件层次结构如图1所示。Android在其核心库的java包中,提供了用于客户端的Socket类和用于服务器端的ServerSocket类。

图1 Android软件层次结构图

3 Android基于Socket的通信机制

Android与服务器的通信方式主要有两种,一是Http通信,二是Socket通信。两者的最大差异在于,http连接使用的是“请求—响应方式”,即在请求时建立连接通道,当客户端向服务器发送请求后,服务器端才能向客户端返回数据。而Socket通信则是在双方建立起连接后就可以直接进行数据传输,在连接时可实现信息的主动传送,而不需要每次由客户端向服务器发送请求。通过建立Socket连接,可为通信双方的数据传输提供通道。Socket的主要特点有数据丢失率低,使用简单且易于移植。

根据传输数据类型的不同,Socket主要分为三类:①流式Socket(SOCK_STREAM),在这种方式下,两个通讯的应用程序之间要先建立一种虚拟连接,提供可靠的、面向连接的通信流,它使用TCP协议从而保证了数据传输的正确性和有序性。②数据报Socket(SOCK_DGRAM),它使用数据报协议UDP,定义了一种无连接服务,数据通过相互独立的报文进行传输,是无序的,并且不保证可靠、无差错。③原始Socket,原始套接字允许对底层协议如IP或ICMP直接访问,它功能强大但使用较为不便,主要用于一些协议的开发。

以下采用的是基于TCP协议的流式Socket方式。其通信机制框图见图2。

4 聊天室系统设计

聊天室系统由两个部分组成:PC服务器端和Android手机客户端。服务器端主要完成用户信息的存储、客户端命令的接收与响应以及信息转发等服务器端应有的功能。客户端主要完成聊天信息的发送与接收、用户登录、注册以及文件传送等功能。

4.1 服务器端

服务器端的工作过程如下:

1)根据服务端的IP和PORT创建一个Server-Socket

2)调用ServerSocket.accept()方法监听客户端的连接

3)根据Socket创建InputStream对象和Output-Stream对象

4)调用InputStream.readUTF()或Output-Stream.writeUTF()与客户端通信

5)循环上述过程,不断监听客户端的连接

4.2 客户端

客户端的工作过程如下:

1)根据IP和PORT创建Socket对象,用于连接服务器

2)根据Socket创建InputStream对象和Output-Stream对象

3)调用这两个对象和服务端通信

4)关闭InputStream和OutputStream

5)关闭Socket

5 聊天室具体实现

5.1 服务器端实现

服务器端程序一共包括四个类,其名称及功能如下:

Server.java:服务器端主程序,负责界面,以及服务端主程序ServerThread的启动,服务端主程序ServerThread又产生BroadCaset及ClientThread线程。

BroadCast.java:服务器向客户端广播线程,负责向客户端发送消息。

ClientThread.java:维持服务器与单个客户端的连接线程,负责接收客户端发来的信息。

ServerThread.java:服务器监听端口线程,负责创建服务器端ServerSocket以及监听是否有新客户端连接,并且记录客户端连接以及需要发送的信息。

5.2 客户端实现

用户登录和注册的主要类:

MainActivity和MyRegisteActivity类,前一个主要实现用户登录,后一个主要实现用户注册。

用户实现私聊和群聊:

MyChatActivity和ChatEveryActivity类

用户之间传送和接收文件:

MyFileActivity、NetTcpFileSendThread和NetTcp-FileReceiveThread类

6 结束语

介绍了Android基于Socket的通信机制,建立了一个基于Socket的Android聊天室系统。该系统能够实现用户注册、登录、公共聊天、私人聊天以及文件传送等功能。

[1]胡晶晶.基于Java Socket的聊天室系统设计与设计[J].微处理机,2010(5):66-67.

[2]Elliotte Rusty Harold.JAVA网络编程(第3版)[M].朱涛江,林剑译.北京:中国电力出版社,2005:283-390.

[3]林少丹.移动终端应用开发技术——Android实战[M].北京:机械工业出版社,2013:1-176.

Design and Im plement of Android Chat System Based on Socket

HU Jing-jing
(Hunan Biological and Electro-mechanical Polytechnic,Changsha 410126,China)

Android is a smart-phone operating platform based on Linux V2.6 kernel,which is free and has open source code,and socket is a network programming interface.This paper introduces themechanism of Android communications based on Socket API,and designs an Android chat system based on Socket.In this system,the phoneswith Android platform are used as clients and a PC as a server,and the functions of login,registration,public chatting,private chatting,file transfer and so on are conducted aswell.

Socket;Android;Chat System;Client;Server

10.3969/j.issn.1002-2279.2014.04.016

TP393

:A

:1002-2279(2014)04-0050-02

胡晶晶(1967-),女,湖南株洲人,硕士,副教授,主研方向:计算机软件、信息安全、信息隐藏。

2013-12-30

猜你喜欢
聊天室服务端服务器端
Linux环境下基于Socket的数据传输软件设计
新时期《移动Web服务端开发》课程教学改革的研究
在Windows Server 2008上创建应用
歌剧聊天室 洗洗晒晒,又是新一天
歌剧聊天室 永远盛放的雪绒花
基于Qt的安全即时通讯软件服务器端设计
基于Qt的网络聊天软件服务器端设计
百万级SUV聊天室(5人)
基于C/S架构的嵌入式监控组态外设扩展机制研究与应用
名画家的聊天室