《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于JAVA的仿QQ聊天系統的設計
基于JAVA的仿QQ聊天系統的設計
來源:微型機與應用2013年第24期
李 丹1,2, 張師毅1
(1. 溫州醫科大學附屬眼視光醫院 信息中心, 浙江 溫州325027; 2. 廈門大學 軟件學院,
摘要: 以JAVA技術為核心,利用計算機局域網通信機制原理(例如TCP/IP協議、客戶端/服務器端模式(C/S模式)、網絡編程設計方法等)完成了一款適合局域網的仿QQ聊天系統。該系統主要由一個聊天服務器端程序和一個聊天客戶端程序兩塊組成。前者通過Socket套接字建立服務器,服務器能讀取、轉發客戶端發來的信息,并能刷新用戶列表;后者通過與服務器建立連接來進行客戶端與客戶端的信息交流。經測試,系統工作性能穩定,基本能達到聊天功能,并實現了部分附加功能。
Abstract:
Key words :

摘  要: 以JAVA技術為核心,利用計算機局域網通信機制原理(例如TCP/IP協議、客戶端/服務器端模式(C/S模式)、網絡編程設計方法等)完成了一款適合局域網的仿QQ聊天系統。該系統主要由一個聊天服務器端程序和一個聊天客戶端程序兩塊組成。前者通過Socket套接字建立服務器,服務器能讀取、轉發客戶端發來的信息,并能刷新用戶列表;后者通過與服務器建立連接來進行客戶端與客戶端的信息交流。經測試,系統工作性能穩定,基本能達到聊天功能,并實現了部分附加功能。
關鍵詞: 即時通信; 通信協議; Socket; 多線程

    隨著計算機網絡技術的發展,網絡聊天工具已經成為人們日常交流的一種重要工具。它通信速度快,成本低,更重要的是方便人們信息的交流和資料的傳遞,所以開發一個易于操作并擁有友好界面的聊天工具可以較好地解決現實生活中通信費用高昂以及電話的單線程通信等問題[1]。QQ聊天系統是一款基于互聯網的即時通信系統,它允許人們利用英特網技術實時地傳送信息,并且能讓用戶選擇性地接受或拒絕其他用戶的信息。由于QQ有著出色的通信性能并且其用戶普及度較高,因此本課題在模仿QQ的前提下,設計了一款具有聊天功能及其他附加功能的軟件。
1 系統分析
1.1 需求分析

    聊天系統最重要的是服務器端和客戶端兩個方面。服務器端有兩個主要任務:
    (1)服務器端應當建立一個ServerSocket,并且不斷進行監聽,判斷是否有客戶端連接請求或斷開連接。
    (2)服務器端應當是一個信息發送中心,所有客戶端的信息都傳到服務器端,由服務器端根據要求分發信息給客戶端。
    客戶端要完成的工作:
    (1)與服務器端建立通信通道,向服務器端發送信息。
 (2)接收來自服務器的應答信息。
    解決了上述的4個問題,也就完成了聊天系統的核心任務。
1.2 功能分析
1.2.1 服務器端功能

    服務器管理員具有開啟服務、關閉服務、配置服務器等功能。具體功能圖如圖1所示。

1.3 開發環境工具
    基于JAVA語言的聊天系統主要運用JAVA語言與Socket類[2-3]結合進行開發。在開發過程中的主要環境包括:
    (1)服務器端:Windows平臺上首先有JAVA的jdk環境,一般采用jdk1.6,此外需要配置相應的path、classpath環境變量,并添加運行所需要的各種jar包,本系統開發的工具為Eclipse10.0。
    (2)客戶端:滿足JAVA的jdk環境,主要采用jdk1.6。
    (3)本次設計主要用到的類:java.net包中的Socket類、java.swing包中的類、java.awt包中的類以及java.util包中的集合類。
2 系統設計與實現
2.1 系統設計要點

    聊天系統的設計主要是提供滿足用戶雙方直接進行實時聊天的服務,在設計聊天系統的過程中,必須要考慮好以下幾個設計要點:
    (1)實現思想
 在Internet上的聊天程序一般都是以服務器提供服務端連接響應,用戶通過客戶端程序登錄到特定服務器,即可與登錄在同一服務器上的用戶進行交流,這是一個面向連接的通信過程。因此,要在TCP/IP環境下[4-5],實現服務器端和客戶端兩部分程序。
 (2)服務器端工作流程
 服務器端通過socket()系統創建一個ServerSocket來對客戶端進行接收,并與指定的本地端口綁定bind(),就可以在端口進行監聽listen()。Map<String,socket>用以存儲用戶姓名和對應的Socket。通過ChatRoomServerThread線程類來處理不同請求。如果有客戶端連接請求,則給出一個相應的Socket,將客戶端地址賦給這個Socket。登錄成功的用戶就可以在服務器上聊天。
 (3)客戶端工作流程
    客戶端程序相對簡單,只需要建立一個Socket與服務器端連接,成功后通過這個Socket來發送和接收數據即可。
2.2 服務器端程序模塊
 服務器與客戶端間通過套接口Socket(TCP)連接。JAVA API為處理套接口的通信提供了一個相關類java.net.Socket,因此在JAVA中使用套接口相對簡單,編寫網絡應用程序也相對比較容易。服務器端采用多線程來滿足多用戶的請求,并在服務器端通過創建一個ServerSocket對象來監聽來自客戶端的連接請求,默認端口自定5044,繼而無限循環調用accept()方法接受客戶程序的連接。
    服務器端程序框圖如圖3所示,服務器開啟主要步驟為:
    (1)制造ServerSocket,對客戶端進行接收
        private void createServerSocket(){}
     (2)啟動服務器,循環接收消息
          public void startService() {
              while (true) {
                  s = ss.accept();
                  new ChatRoomServerThread(s).start();
              }
           }
    (3)線程類處理各種請求,在run()方法中依據不同類型請求進行各種操作
      class ChatRoomServerThread extends Thread {
       //主要方法
      public ChatRoomServerThread(Socket s) {}
       public void run(){
      sendOnlineUserList(){}
        sendMessageToClient(String mesg, String clientUserName) {}
       sendMessageToAllClient(String mesg){}
                                 //向所有好友發送消息
                  }
       }
2.3 客戶器端程序模塊
    客戶端通過Socket與服務器建立連接。服務器與客戶端通過構造器ObjectInputStream與ObjectOutputStream建立輸入/輸出流,然后雙方通過該輸入/輸出流相互傳遞信息。一旦收到客戶端的連接請求,服務器accept()方法立即返回一個新建的Socket對象??蛻舳死^而向服務器發送消息,比如文件傳輸等,服務器收到來自客戶的請求后,針對不同的消息處理不同的請求??蛻舳送ㄟ^多線程類ReadMessageThread處理用戶不同類型的請求。其程序框圖如圖4所示。

 

 

    系統除了以上功能之外,還有一些附加功能模塊,可以通過菜單欄進行選擇,包括設置聊天窗口界面、單機游戲(掃雷)、便利記事本、文件上傳等。
    本次設計的仿QQ聊天軟件系統運行穩定,用戶通過客戶端軟件可實現聊天的基本功能,并添加了一些附加功能。但還存在著一些不足之處,比如用戶管理不夠全面,只能顯示在線用戶;另外系統未與數據庫進行連接。因此系統在投入使用之前還需要不斷地完善。
參考文獻
[1] 龐怡,許洪光,姜媛.即時通訊工具現狀及發展趨勢分析[J]. 科技情報開發與經濟,2006,16(16):169-170.
[2] 童銘.基于Socket的多用戶通信框架及實現[J].四川大學學報(自然科學版),2006,43(3):702-705.
[3] 李峰. 利用流式Socket編程實現Window與Linux的通 信[J].微計算機信息,2006,22(3):112-113.
[4] 楊延雙, 張建標, 王全明. TCP/IP協議分析及應用[M].北京:機械工業出版社,2007.
[5] 李素俠,段友祥.嵌入式TCP_IP協議的分析與研究[J].微計算機信息,2005(20):20-20.

此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
欧美影院视频| 久久精品久久综合| 国内激情久久| 国产精品色婷婷| 欧美日韩另类丝袜其他| 欧美激情2020午夜免费观看| 久久视频免费观看| 久久精品99久久香蕉国产色戒| 亚洲综合三区| 欧美国产日韩精品| 久久久久成人精品| 久久久久久久久久久久久女国产乱| 久久国产欧美| 久久美女性网| 女女同性精品视频| 欧美伦理在线观看| 欧美视频成人| 国产精品亚洲一区| 国产精品日韩欧美| 国产一区二区三区在线观看精品| 韩日在线一区| 亚洲高清视频在线| 日韩亚洲欧美中文三级| 中文久久乱码一区二区| 亚洲综合色激情五月| 欧美伊人久久久久久久久影院| 久久精品视频免费观看| 亚洲精选在线| 亚洲一区在线免费观看| 欧美一区二区在线| 久久夜色精品国产亚洲aⅴ| 欧美成人免费在线| 欧美日韩一区二区在线| 国产乱人伦精品一区二区| 国产亚洲欧美一区二区| 伊人久久综合97精品| 99国产一区二区三精品乱码| 亚洲视频每日更新| 欧美专区一区二区三区| 亚洲激情av在线| 中国成人在线视频| 久久精品30| 欧美—级在线免费片| 国产精品成人一区二区三区夜夜夜 | 亚洲一区999| 欧美一区二区三区久久精品茉莉花 | 欧美承认网站| 亚洲第一福利在线观看| 亚洲视频综合| 欧美午夜精品伦理| 一本一本a久久| 亚洲日本成人| 欧美激情在线播放| 校园春色国产精品| 欧美伊人久久| 亚洲综合精品| 欧美岛国激情| 国产精品二区二区三区| 国产欧美一区二区三区久久人妖| 亚洲高清色综合| 亚洲一区二区在线免费观看视频| 久久精品视频亚洲| 亚洲图片欧美午夜| 久久久久久久999| 欧美三级精品| 黑人巨大精品欧美一区二区小视频| 日韩视频精品在线| 欧美在线一二三区| 亚洲午夜久久久久久久久电影网| 久久先锋资源| 国产精品久久久久久久7电影| 亚洲第一精品在线| 午夜精品一区二区三区四区| 亚洲精品中文字幕有码专区| 久久精品国产清高在天天线| 欧美日韩三级电影在线| 揄拍成人国产精品视频| 亚洲欧美激情四射在线日 | 亚洲精品一区二区三区在线观看| 午夜精品久久久久久久| 欧美精品三区| 在线观看国产精品网站| 亚洲欧美日本国产专区一区| 一区二区不卡在线视频 午夜欧美不卡在| 久久精品国产亚洲一区二区| 欧美午夜精品久久久久久超碰| 在线精品国产成人综合| 亚洲欧美在线观看| 亚洲综合色丁香婷婷六月图片| 久久综合电影一区| 国产日韩精品一区二区| 亚洲网站视频| 在线一区欧美| 欧美精品在线观看播放| 影视先锋久久| 久久激情综合| 久久精品综合| 国产欧美一级| 亚洲欧美日韩天堂一区二区| 亚洲字幕一区二区| 久久国产主播| 国产精品第一页第二页第三页| 在线国产日韩| 亚洲第一区在线| 久久精品女人天堂| 国产日韩欧美亚洲一区| 亚洲在线播放电影| 亚洲调教视频在线观看| 欧美精品一区在线| 亚洲激情综合| 亚洲清纯自拍| 欧美成人在线影院| 亚洲国产片色| 日韩午夜中文字幕| 欧美日产一区二区三区在线观看| 在线欧美视频| 亚洲精品国产精品国自产观看| 美女精品自拍一二三四| 激情综合网址| 91久久国产综合久久蜜月精品 | 国内精品久久久久久影视8| 午夜一区二区三区在线观看| 欧美一区二区三区久久精品茉莉花 | 亚洲图色在线| 欧美亚洲日本国产| 国产欧美日韩综合精品二区| 亚洲欧美一区二区三区在线| 欧美一区二区日韩一区二区| 国产偷国产偷精品高清尤物| 午夜精品久久一牛影视| 久久精品国产久精国产思思| 韩日欧美一区| 亚洲欧洲日产国产综合网| 欧美二区不卡| 亚洲精品一区二区三区四区高清| 国产精品99久久99久久久二8| 欧美日韩一区在线播放| 亚洲视频在线一区| 久久gogo国模裸体人体| 经典三级久久| 99精品欧美一区| 国产精品久久| 欧美一区二区女人| 另类激情亚洲| 亚洲美女视频在线免费观看| 亚洲一区在线直播| 国产深夜精品福利| 亚洲国产欧美一区二区三区同亚洲 | 久久精品视频在线播放| 欧美福利视频| 一区二区三区日韩精品| 久久国产99| 亚洲欧美中文日韩在线| 亚洲欧洲一区二区天堂久久 | 蜜臀99久久精品久久久久久软件| 亚洲激情成人网| 亚洲一二三四久久| 国产一区二区三区在线观看网站| 最新国产乱人伦偷精品免费网站| 欧美日韩国产丝袜另类| 亚洲男人的天堂在线aⅴ视频| 老司机精品视频网站| 日韩视频不卡中文| 久久精品伊人| 亚洲精品欧美日韩| 欧美制服丝袜第一页| 亚洲国产精品视频一区| 亚洲欧美综合精品久久成人| 永久91嫩草亚洲精品人人| 国产精品99久久久久久久久久久久 | 9i看片成人免费高清| 国产精品欧美日韩久久| 亚洲国产高清在线观看视频| 欧美日韩精品福利| 欧美一区二区免费| 欧美日韩国产综合一区二区| 午夜精品在线| 欧美精品亚洲| 午夜视频久久久久久| 欧美激情第一页xxx| 午夜精品国产| 欧美紧缚bdsm在线视频| 欧美一区二区精品| 欧美色欧美亚洲另类七区| 亚洲电影在线播放| 国产精品久久久久久av下载红粉| 亚洲黄色免费网站| 国产欧美一区二区精品性 | 欧美日韩精品三区| 欧美专区在线观看| 欧美视频四区| 亚洲欧洲日本一区二区三区| 国产精品一区二区在线| 日韩一本二本av| 狠狠色香婷婷久久亚洲精品| 亚洲欧美国产视频| 亚洲精品一区在线观看香蕉| 开元免费观看欧美电视剧网站| 亚洲一区二区三区激情| 欧美精品久久久久久久久老牛影院 |