?

基于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手機客戶端。服務器端主要完成用戶信息的存儲、客戶端命令的接收與響應以及信息轉發等服務器端應有的功能??蛻舳酥饕瓿闪奶煨畔⒌陌l送與接收、用戶登錄、注冊以及文件傳送等功能。

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架構的嵌入式監控組態外設擴展機制研究與應用
名畫家的聊天室
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合