仿QQ聊天程式(java)
仿QQ聊天程式
一、設計內容及要求
1.1綜述
A.系統概述
我們要做的就是類似QQ這樣的面向企業內部的聊天軟體,基本功能和QQ類似。首先,系統分為兩大部分,第一部分是客戶端,是使用者使用的部分,第二部分就是伺服器,所有的客戶端都是通過伺服器來進行使用者身份驗證及聊天轉接的。客戶端提供主要的介面及服務請求,如:登入介面、註冊介面、找回密碼介面、主窗體介面、聊天介面、資訊檢視介面等。客戶端主要提供服務請求介面,核心的業務邏輯處理主要由伺服器提供,並向客戶端傳送請求的結果。同時,伺服器要能提供服務的開啟、關閉功能及檢視線上人數及客戶端登入日誌。
人員組成及分工
張XX(組長):負責整體的架構設計、後臺資料庫及通訊部分。
房 X(組員):聊天介面、註冊介面、登入介面、找回密碼、及其業務邏輯。
高 X(組員):主窗體介面、資訊檢視及其業務邏輯。
B.要求
1).小組成員必須按時完成各自的任務。
2).設計上與技術上有問題的先自行解決(看書、上網查),如不能解決的集體討論解決。有其它的問題及時提出來!
3).必須寫文件(寫把各自模組的整體設計用UML圖或Viso畫的圖(儘量不要只是簡單的語言敘述)表達出來),學會用面向物件的思想來來設計,採用模組化的思想分解模組。(設計原則與設計模式能用的用)
4).每個類必須有類說明,每個函式也必須有函式說明,函式的具體設計也必須有必要的註釋。
5).如果不能遵守規定或要求的可以提前退出,不強留。
(注:即使不會寫程式碼,也沒關係,只要一能用UML圖或其他的圖等表達出自己的設計思想及具體的實現設計也行)
C.開發環境
執行環境:Myeclipse整合開發環境,jdk 1.6版本。
使用語言:Java語言。
使用資料庫:Oracle資料庫。
1.2需求分析
需求背景
即時通訊軟體為我們提供了諸多的方便,使我們逐步享受資訊時代的便捷。大家最熟悉的即時通訊軟體就是QQ了,因為它幾乎已經融入了我們每個人的日常生活。沒有了QQ,沒有了手機,我們或許真的“活不了了”。由此可見,生活在資訊時代的人們對即時通訊、聊天軟體有巨大的需求,這樣的軟體也將為我們節省大量的時間和金錢,或許還能成為我們發家致富的工具,比如:產品的推介、售後服務及技術交流等。
然而,既然已經有了QQ如此強大的即時通訊軟體,我們再去做這樣的軟體還有什麼競爭力嗎?QQ已經深入人心,要想再去做可能沒有任何競爭力。此時,我們可以換一個角度,調整使用者物件。如今,企業內部資訊在這個資訊時代就是金錢,尤其是一些大企業的內部資訊,如果這些資訊洩露,可能會造成巨大的經濟損失,甚至將導致企業破產。但是,為了便捷企業員工之間的交流,做這樣的一個企業內部即時通訊、聊天軟體還是很有市場的。我們的目標就是做的像QQ,但面向企業內部使用。
企業內部為了方便員工之間便捷的交流,需要開發一款適合企業內部員工進行即時通訊的軟體,這樣的軟體既滿足了企業內部員工之間便捷的交流,同時,也防止企業內部資訊的外流,開發這樣一塊麵向企業內部的即時通訊軟體,對於企業來說獲益良多。
在開發這款軟體時,為了使習慣了使用QQ的使用者,更加方便的使用本軟體,我們將很大程度上,模仿QQ的使用者介面設計,以適應使用者的使用習慣,方便使用者使用。
功能需求
1)客戶端:提供登入、主窗體及聊天等介面及對應的業務邏輯,向伺服器傳送相應的服務請求,並接受相應的處理結果。客戶端是輕量級的軟體,只負責連結遠端伺服器,併發出相應的服務請求,並不進行核心業務邏輯的處理。具體的處理交給伺服器,而客戶端只接收伺服器處理的結果並顯示給使用者。
2)伺服器:監控登入資訊及線上使用者資訊,接收客戶端的服務請求,並做相應的處理,然後將處理結果傳送給客戶端。伺服器負責處理核心的業務邏輯,並負責連線資料庫,儲存和讀取資料。因此,伺服器端設計的好壞也直接影響即時通訊軟體的質量。
用例描述
1)客戶端:
圖 1-1 客戶端用例圖
2)伺服器:
圖 1-2 伺服器端用例圖
二、設計原理及方案
2.1總體設計
系統架構設計
1)採用MVC架構模式
客戶端:
A. 包view(檢視、介面層):只負責介面的顯示。
B. 包business(業務邏輯層):核心業務的處理。
C. 包data (資料訪問層):讀寫資料、接收發送資料。
伺服器:
A. 包view(檢視、介面層):只負責介面的顯示。
B. 包business(業務邏輯層):核心業務的處理。
C. 包data (資料訪問層):讀寫資料、接收發送資料。
2) 檔案組織
A. 客戶端:
圖2-1 客戶端檔案組織結構
B. 伺服器:
圖2-2 伺服器檔案組織結構
3) 採用基於網路的三層C/S模式
圖2-3 基於C/S的模式圖
功能模組設計
1)客戶端:
圖2-4 客戶端功能模組圖
2)伺服器:
圖3-5 伺服器功能模組圖
資料庫設計
1)概念結構設計
圖 2-6 資料庫實體E-R圖
2)邏輯結構設計
使用者表(QQ號、密碼、簽名、頭像編號、暱稱、性別、生日、星座、血型、學歷、電話、郵箱、所在地)
分組表(組號、組名、建立時間、QQ號)
好友表(好友QQ號、QQ號、所屬分組號、新增時間、是否上線)
聊天記錄表(記錄編號、傳送者QQ號、接受者QQ號、傳送時間、資訊編號)
聊天內容(資訊編號、內容、字型型別、字型大小、字型顏色)
登入資訊表(登入編號、登入IP、埠號、登入時間、是否線上、QQ號)
QQ群(群編號、群名稱、建立時間)
使用者與群關係(關係編號、QQ號、群編號)
3)表結構設計
表 2-1 使用者與群關係(User_Group)
欄位名稱 |
說明 |
欄位型別 |
欄位長度 |
是否為空 |
約束 |
ugno |
關係編號 |
Number |
2 |
否 |
主鍵 |
|
QQ號 |
number |
5 |
否 |
外來鍵 |
gno |
群編號 |
number |
5 |
否 |
外來鍵 |
表 2-2 使用者資訊表(UserInfo)
欄位名稱 |
說明 |
欄位型別 |
欄位長度 |
是否為空 |
約束 |
|
QQ號 |
number |
5 |
否 |
主鍵 |
pwd |
密碼 |
Nvarchar2 |
10 |
否 |
|
sign |
簽名 |
Nvarchar2 |
30 |
是 |
|
photoID |
頭像編號 |
Number |
2 |
否 |
|
nickname |
暱稱 |
Nvarchar2 |
10 |
否 |
|
sex |
性別 |
Char |
2 |
否 |
男或女 |
birthday |
生日 |
Date |
是 |
||
constellation |
星座 |
Nvarchar2 |
60 |
是 |
|
bloodType |
血型 |
Char |
10 |
是 |
A、B、O、AB |
diploma |
學歷 |
Nvarchar2 |
10 |
是 |
|
telephone |
電話 |
Nvarchar2 |
15 |
是 |
|
|
電子郵件 |
Nvarchar2 |
20 |
是 |
|
address |
所在地 |
Nvarchar2 |
20 |
是 |
表 2-3分組資訊表(Subgroup)
欄位名稱 |
說明 |
欄位型別 |
欄位長度 |
是否為空 |
約束 |
sno |
組號 |
Number |
2 |
否 |
主鍵 |
sname |
組名 |
Nvarchar2 |
20 |
否 |
|
sdate |
建立日期 |
Date |
是 |
預設當前日期 |
|
|
QQ號 |
number |
5 |
否 |
外來鍵 |
表 2-4好友資訊表(Friends)
欄位名稱 |
說明 |
欄位型別 |
欄位長度 |
是否為空 |
約束 |
Fno |
編號 |
Number |
2 |
否 |
主鍵 |
fqq |
好友QQ |
number |
5 |
外來鍵 |
|
fsno |
所屬分組號 |
Number |
2 |
否 |
外來鍵 |
fdate |
新增日期 |
Date |
|||
Fstatus |
是否線上 |
number |
2 |
||
|
本人QQ |
number |
5 |
外來鍵 |
表 2-5聊天記錄表(ChatInfo)
欄位名稱 |
說明 |
欄位型別 |
欄位長度 |
是否為空 |
約束 |
cno |
記錄編號 |
number |
2 |
主鍵 |
|
csendqq |
傳送者QQ |
number |
5 |
外來鍵 |
|
creceiveqq |
接受者QQ |
number |
5 |
外來鍵 |
|
cdate |
傳送日期 |
TimeStamp |
|||
tno |
資訊編號 |
Number |
3 |
外來鍵 |
表 2-6資訊表(Text)
欄位名稱 |
說明 |
欄位型別 |
欄位長度 |
是否為空 |
約束 |
tno |
資訊編號 |
Number |
3 |
否 |
主鍵 |
tcontext |
內容 |
Nvarchar2 |
200 |
||
tfonttype |
字型型別 |
Nvarchar2 |
10 |
||
tfontsize |
字型大小 |
Number |
5 |
||
tfontcolor |
字型顏色 |
Nvarchar2 |
5 |
表 2-7登入資訊表(Login)
欄位名稱 |
說明 |
欄位型別 |
欄位長度 |
是否為空 |
約束 |
lno |
登入編號 |
Number |
5 |
否 |
主鍵 |
lip |
登入IP |
Nvarchar2 |
20 |
||
lport |
埠號 |
Number |
5 |
||
ldate |
登入日期 |
Date |
|||
lstatus |
是否線上 |
Number |
1 |
1 or 0 |
|
lqq |
QQ號 |
number |
5 |
否 |
外來鍵 |
表 2-8 QQ群資訊(GroupTable)
欄位名稱 |
說明 |
欄位型別 |
欄位長度 |
是否為空 |
約束 |
gno |
群編號 |
Number |
5 |
否 |
主鍵 |
gname |
群名稱 |
Nvarchar2 |
20 |
否 |
|
gdate |
建立日期 |
date |
通訊協議設計
計算機之間傳送資料由兩種,即TCP通訊和UDP通訊。TCP是可靠的面向連線的通訊協議,二UDP是不可靠的面向無連線的通訊協議。
1)基於TCP的通訊
在進行登入使用者驗證、新增好友、刪除好友等操作時,採用基於TCP的通訊協議。
2)基於UDP的通訊
基於UDP通訊的基本模式:
(1)將資料打包,稱為資料包(好比將信件裝入信封一樣),然後將資料包發往目的地。
(2)接受別人發來的資料包(好比接收信封一樣),然後檢視資料包中的內容。
在進行使用者聊天時,採用基於UDP的通訊協議。
快取資料設計
1) 使用者資訊Bean
為了儲存使用者及好友的個人資訊,此處設計使用者資訊快取資料,當用戶登入時,將使用者個人及好友的基本資訊儲存,以備使用者查詢,就不用再次連線資料庫獲取了。
UserInfoBean類:儲存使用者QQ號、暱稱、簽名、血型、地址等資訊。
2) 訊息資訊Bean
使用者在進行聊天時,需要傳遞必要的資訊,此處的訊息Bean資料結構就是儲存收發使用者的QQ號、IP地址、訊息內容、字型大小、字型顏色、字型型別等資訊。
Message類:儲存收發使用者的QQ號、IP地址等資訊。
2.2詳細設計
系統流程圖
圖 2-7 系統流程圖
設計模式使用
1)中介者模式:
所有的使用者都通過伺服器進行通訊,伺服器其中介的作用。
2)觀察者模式:
當有使用者登入時,會通知其他線上好友,其他好友及時修改此使用者的線上狀態。
通訊協議的實現
2.1.3.1基於TCP的通訊
在進行登入使用者驗證、新增好友、刪除好友等操作時,採用基於TCP的通訊協議。
A.客戶端TCP通訊設計
設計ClientToServer類,該類實現了Runnable介面,是一個執行緒。
主要方法:
[1] boolean sendLoginInfoToServer(User u) :登入請求。
[2] void getProgerties():獲取配置檔案中的伺服器IP地址資訊。
[3] void logout(): 下線,通知伺服器該使用者下線。
[4]inttoRegister(UserInfoBean user):新使用者註冊,返回QQ號。
[5] void noticeUpdate():通知重新整理好友資訊。
B. 伺服器TCP通訊設計
1)設計ServerThread執行緒類:處理使用者連線伺服器請求,併為其啟動單獨的服務(Server)執行緒。
主要方法:
[1] void run(): 重寫執行緒類Thread的方法,不斷的等待客戶端的連線請求。
[2] void pauseThread():暫停服務。
[3] void reStartThread():恢復服務。
2)設計Server執行緒類:處理每個上線使用者個各種服務請求。
主要方法:
[1] void run():不斷的等待使用者的請求資訊,並判斷請求型別。
[2] void login():處理使用者登入。
[3] void registerNewUser():處理註冊新使用者
[4] void queryUser():處理查詢使用者。
[5] void addFriend():新增好友。
[6] void deleteFriend():刪除好友。
[7] void updateOwnInfo():更新自己的資訊。
[8] void logout():下線。
[9] void queryFriend():查詢好友資訊。
2.1.3.2基於UDP的通訊
在進行使用者聊天時,採用基於UDP的通訊協議。
A.客戶端UDP通訊設計
設計ClientToServerThread執行緒類:負責UDP通訊。
主要方法:
[1]void run():迴圈等待監聽發來的資料。
[2]void getPropertieInfo():獲取通訊的伺服器的IP地址及本機通訊埠。
[3]void sendData(byte buffer[]):傳送資料。
[4]void Object ByteToObject(byte[] bytes):將Byte資料轉為Object型別。
[5]void ObjectToByte(Object obj):將Object型資料轉為Byte型。
[6]void closeSocket():關閉收發資料報套接字。
B. 伺服器UDP通訊設計
設計ClientToServerThread執行緒類:負責UDP通訊,主要是轉發使用者傳送的資訊,並儲存使用者的聊天記錄。
主要方法:
[1]void run():迴圈等待監聽發來的資料。
[2]void getPropertieInfo():獲取通訊的伺服器的IP地址及本機通訊埠。
[3]void sendData(byte buffer[]):傳送資料。
[4] void Object ByteToObject(byte[] bytes):將Byte資料轉為Object型別。
[5]void ObjectToByte(Object obj):將Object型資料轉為Byte型。
[6]void closeSocket():關閉收發資料報套接字。
資料訪問層的實現
2.1.4.1 開啟資料庫連線類(ConnectionFactory)
[1]void getPropertiesInfo():從配置檔案中獲取資料庫連線資訊。
[2]Connection getConnection():開啟資料庫連線。
2.1.4.2 關閉資料庫連線類(DbClose)
[1]void getPropertiesInfo():從配置檔案中獲取資料庫連線資訊。
[2]void close(Connection conn):關閉資料庫連線。
[3]void close(PreparedStatement pre):關閉資料庫語句
[4]void close(ResultSet rs):關閉結果集
[5]voidclose(Connection conn, PreparedStatement pre, ResultSet rs)
2.1.4.3 資料操作類(Dml)
[1]void insert(UserInfoBean user):增加新使用者,插入資訊。
[2]void update(UserInfoBean user):更新使用者資訊。
[3]void delete(int qq):刪除資訊。
介面層的實現
2.1.5.1登入介面
JLoginFrm登陸窗體主要用於使用者登陸,註冊和找回密碼。
內部類:
BackgroundPanel 繼承於JPanel主要用於設定窗體背景圖片
主要函式:
1.actionPerformed(ActionEvent e)主要對窗體的按鍵監聽
2.JLoginFrm()建構函式,控制元件的初始化。
2.1.5.2註冊介面
JRegisterFrm繼承與JFrame主要用於使用者基本資訊的註冊。
主要函式:
1. Void setDay()根據不同的年份和月份設定天數
2.String getBir()以1-1月-2014形式得到使用者的生日
3.getUserInfo()得到使用者的所有資訊
2.1.5.3 聊天介面
ChatPanel主要用於使用者間的聊天通訊
主要函式:
1、setMessage()設定當前顯示所有會話的面板,不可編輯
2、setSendMessage()設定當前傳送訊息的面板,可編輯
3、sendMessage()傳送訊息,講傳送訊息面板的內容傳送到會話面板 和對方。
4、sendFile()傳輸檔案
5、sendImage()傳送圖片
6、startShake()傳送震動訊息
2.1.5.4 主介面
主介面的主要內容有QQ頭像設定,包括暱稱、QQ號、簽名的顯示,使用者登入狀態設定,還有好友列表顯示,像這些建立好友列表所需要的資訊是從服務端獲得的;還有一些輔助介面,比如檢視好友資料或者檢視自己的資料介面,查詢好友介面,新增好友介面等。
原始碼中的一些主要類及類中的主要方法及其作用:
1.ColorConvertOp類:這個類主要負責顏色轉換的
[1] public ImageIcon getGrayPicture(String path)//該方法獲取圖片路徑,將轉換後的灰色ImageIcon返回。
[2] public class CombListRenderer extends JLabelimplements 2.ListCellRenderer//該類個性化設定combobox的單元格屬性
[1] publicComponent getListCellRendererComponent(JList list,Object obj,int row,booleansel,booleanhasFocus)
//該方法是重寫了ListCellRenderer中的getListCellRendererComponent,返回了一個自定義的Component
3、public class findFriendFrm extends JFrame
//該類負責查詢好友介面
[1] public String getName()//獲得找到好友的暱稱或者QQ號
[2] public class InformationFrm extends JFrame
//該類負責顯示好友資訊的介面
2.1.5.5 使用者資訊介面
好友資訊介面主要是將從服務端讀取的好友的個人資訊顯示出來。
[1] publicInformationFrm(UserInfoBean userInfo)
//在該構造方法中必須傳入一個UserInfoBean 的物件,此物件中包含了好友的所有資訊
[2] public class selectGroupFrm extends JFrame
//該類負責顯示新增好友的一個介面
三、實現效果
圖 5-1 登入介面
圖 5-2 登入介面
圖 5-3 註冊介面
圖 5-4 找回密碼介面
圖 5-5 主介面
圖 5-6 資訊檢視介面
圖 5-7 聊天介面
圖 5-8 訊息記錄介面
圖 5-9 伺服器登入介面
圖 5 – 10 伺服器管理介面
四、技術難點與解決方案
4.1通訊模組
在通訊模組,我們既使用了基於TCP的通訊協議,也使用了基於UDP的通訊協議,在登入驗證、新增好友等通訊部分,我們採用了基於TCP的通訊協議,在聊天時,我們採用了基於UDP的通訊協議,將兩種協議都進行了相應的練習。
4.2資料庫模組
在資料庫建模時,使用了多張表來儲存資料,使其達到了第三正規化,雖然,查詢資料的時候可能會涉及多個表的巢狀查詢,但每個表很單一,擴充套件靈活。
4.3介面模組
4.3.1 登入介面
登陸介面主要使用到自定義最大化,最小化和關閉按鈕,允許滑鼠點選窗體拖動。對輸入的字元進行判斷設定,只允許QQ號碼輸入數字。使用setUndecorated(true);
setResizable(false);設定去除邊框,和不允許改變窗體大小。使用addKeyListener()函式判斷字元輸入只允許輸入數字,使用addMouseMotionListener()方法來允許滑鼠點選任何地方拖動窗體。
4.3.2 主機介面
對一些元件的使用,如在好友顯示列表中需要用到:JTree和JTabbedPane
右鍵好友時會彈出好多選單需要用到:JMenuItem,JMenu和JPopupMenu在顯示登入狀態時需要用到:ComboBox但是系統預設的元件外觀往往達不到我們的審美要求,所以我們要對它們的外觀進行個性化設定,所以我們要對其進行重繪,以下是具體實現方法:重寫BasicTreeUI 中的setLeftChildIndent和setRightChildIndent方法,以達到對齊父子節點,重寫了DefaultTreeCellRenderer和DefaultMutableTreeNode來設定JTree帶圖片顯示節點,並且給節點增加了一些我們需要的東西,重寫ListCellRenderer 中的Component getListCellRendererComponent(JList list,Object obj,introw,boolean sel,boolean hasFocus)增加在ComboBox顯示圖片的效果。
頭像灰色顯示效果:還有一些圖片處理效果的技術,如QQ頭像去色處理(灰色頭像),其中主要原理就是將頭像圖片中的畫素陣列取出來,利用一定的顏色變換公式對其顏色進行變換以達到灰顯效果。主要實現程式碼見public classColorConvertOp中的 static public ImageIcon getGrayPicture(String path)throws IOException方法
五、總結
張的總結:
通過這次聊天程式課程設計,又有了許多收穫。最初,本來打算做大四學長的“我校淘”網站,但,後來通過與大四學長的交流、溝通,他說三週的時間太短了,因為我們之前沒有接觸過Java Web方面的知識,所以時間不夠,因此,先學習這方面的的知識。
聊天軟體,是我之前一直想完成的一個小軟體,但沒有機會去做,這次有機會做,我決定把它做好,做的像QQ一樣。剛開始,對於網路通訊、資料庫連線及操作這部分,我們之前沒練習過,因此,對於整體的設計都很難把握,我們參考了部分書籍,大概瞭解了其原理,之後就是確定需求,雖然我們對QQ都很熟悉,也都基本瞭解其大概需求,但在實際設計時,很多需求方面東西都是看不見的,必須自己查資料、思考、練習才能發掘。然後就是總體設計及人員分工,這一步也很關鍵,如何協調每個人,如何發揮每個人的優勢,這需要很多工作。
在整體設計完成後,我們考慮先開發出簡單的聊天軟體,然後逐步細化,因此,在詳細設計時,我們簡化了一些東西,先開發出一個基本原型,用以驗證技術並進一步明確需求。然後,對部分技術進行改進和細化,最後,再次基礎上不斷的迭代進行,由於我們的水平有限,我們最初的設計並不一定是好的設計,只有不斷的試驗和改進,才能開發出好的軟體,當然,前期的整體架構設計非常重要,這將很大程度上決定軟體的質量和適應需求變更的能力。總之,在試驗與改進中,我們學到了很多東西,不光是技術,還有合作。
房X的總結:
這是第二次小組一起完成一個小專案,總體感覺相對個人完成比較輕鬆,而且完成的專案,比個人的更好,相互之間可以互相學習,可以看到別人的程式碼風格,和對同一問題的不同解決方法,每個人的設計思想,可充分展示每個人的優勢,並通過相互學習,補充自己的知識不足之處,更快更好的學習知識。
高X的總結:
本次課程設計我做的是一部分介面設計,沒啥核心技術,就是對一些元件使用的鞏固,通過使用這些元件,加深了對一些常用元件的繼承關係的理解,有些小問題還沒有解決,但是以後會自己慢慢解決的。
總體而言,我們完成的聊天軟體,較好的實現了預期的目標。
軟體的優點:具有漂亮、友好的介面、功能較全,軟體具有較好的架構設計,使用者體驗較好。軟體的缺點:部分功能測試還不理想,有些功能還未實現。
參考文獻
1.石彥芳,李丹.《Oracle資料庫應用與開發》.機械工業出版社,2013
2.耿祥義,張躍平.《Java面向物件程式設計》.清華大學出版社,2010
3.張海藩.《軟體工程導論》(第5版).北京.清華大學出版社,2008
4.劉新.《Java開發技術大全》.北京.清華大學出版社,2009
5.明日科技 《Java經典程式設計300例》清華大學出版社 2012
6.樑建全 《你必須知道的261個Java語言問題》 人民郵電大學 2009
相關推薦
仿QQ聊天程式(java)
仿QQ聊天程式 一、設計內容及要求 1.1綜述 A.系統概述 我們要做的就是類似QQ這樣的面向企業內部的聊天軟體,基本功能和QQ類似。首先,系統分為兩大部分,第一部分是客戶端,是使用者使用的部分,第二部分就是伺服器,所有的客戶端都是通過伺服器來進行使用者身份驗證
仿QQ聊天工具(JAVA實現)專案總結
一、遇到的異常及解決辦法 1. org.hibernate.HibernateException:Could not parse configuration: /hibernate.cfg.xml ..省略 Caused by: org.dom4j.Docu
簡單的聊天程式(java的socket+多執行緒)
服務端 import java.net.*; import java.util.*; import java.io.*; public class ChatServer { ServerSocket server = null; Collection
Netty 仿QQ聊天室(實戰二)
Netty 聊天器(百萬級流量實戰二):仿QQ客戶端 瘋狂創客圈 Java 分散式聊天室【 億級流量】實戰系列之15 【部落格園 總入口 】 寫在前面 大家好,我是作者尼恩。 今天是百萬級流量 Netty 聊天器 打造的系列文章的第二篇, 設計一個
JAVA 仿QQ聊天程式
一、設計內容及要求 1.1綜述 A.系統概述 我們要做的就是類似QQ這樣的面向企業內部的聊天軟體,基本功能和QQ類似。首先,系統分為兩大部分,第一部分是客戶端,是使用者使用的部分,第二部分就是伺服器,所有的客戶端都是通過伺服器來進行使用者身份驗證及聊天
成績統計程式(Java)
我的程式: package day20181018;/** * 成績統計系統 * @author Administrator */import java.util.Scanner;//提供計算機直接掃描鍵盤輸入方法import java.util.Arrays;//呼叫陣列中Arrays類中的方法pub
python 實戰之模仿開發QQ聊天軟體(三)TCP/IP伺服器與客戶端建設
無論是p2p還是c/s還是b/s,只要用到通訊,必然是要用到今天寫的這個。 TCP/IP是網路軟體最核心的部分,缺少這個你只能當做單機遊戲玩。 TCP/IP,只需要搞清楚udp和tcp這兩個就可以了。 兩者的區別在於 udp每次傳送資訊都需要傳送ip和埠號,可以比
簡單的模擬電話簿程式(java)
要求: 編寫一個模擬電話簿程式,實現對聯絡人的增刪查 提示: HashMap儲存聯絡人,Key為聯絡人姓名,Value為其電話號碼 在console控制檯中模擬增刪查改
Netty聊天程式(2):從0開始實戰100w級流量應用 - 圖解Netty系列
客戶端 Client 登入和響應處理 瘋狂創客圈 Java 分散式聊天室【 億級流量】實戰系列之 17【 部落格園 總入口 】 文章目錄 客戶端 Client 登入和響應處理 寫在前面 客戶端的會話管理 客戶端的邏輯構成
安卓開發中使用ListView實現類似QQ聊天框(總結)
效果如下:(現在有點醜,至於每個item的背景,可以自己處理圖片)思路:看見上圖的效果,既然是兩種不同的效果,肯定是要用資料介面卡的。MutiLayoutAdapter.java的程式碼如下:package com.deepreality.mutilayoutadapterd
JAVA仿QQ聊天系統4.0(擴充套件韓順平的程式的功能及介面)附原始碼
下載連結 http://download.csdn.net/detail/qq245034548/8391381連結:https://pan.baidu.com/s/1btDApLQuHvLk44EtWKQygw 密碼:3ezf4 詳細設計4.1 系統程式流程如下
仿QQ聊天軟體java實現(一)
之前學java通訊的時候寫過簡單的通訊程式,但比較簡陋,於是重新寫了一個仿照QQ的聊天軟體,主要在介面上做了優化,增加了一些功能。實現的功能有註冊、登入、好友列表、分組、黑名單、新增好友、群列表、建立群、新增群、聊天氣泡、傳送文字、圖片、檔案、表情。 好了先上圖看下效果:
Android即時通訊--仿QQ即時聊天:(五)聊天模組
1、複雜ListView的展示 聊天模組其實就是一個複雜的ListView,在資料介面卡中,從application中獲取到當前登入的使用者,與聊天訊息中的from引數進行比較,如果兩者相同則說明是自己傳送的訊息,那麼ListView中就顯示傳送訊息的佈局,否則顯示接收訊息
Socket實現仿QQ聊天(可部署於廣域網)附原始碼(2)-伺服器搭建
1.前言 這是本系列的第二篇文章,第一篇文章得到了很多朋友們的支援,在這裡表示非常的感謝。對於這一系列文章需要補充的是這只是一篇入門級別的Socket通訊文章,對於專業人員來說完全可以跳過。本文只介紹一些基本TCP通訊技術並使用該技術實現聊天功能。本篇文章實現聊
Android即時通訊--仿QQ即時聊天:(一)初識Socket
/** * socket服務端 * * @author ZHY * */ public class ServerSocketTest { public static void main(String[] args) throws IOException { final ServerSock
網路程式設計(三)---- MFC 仿QQ聊天軟體
今天來八一八,MFC的SOCKET 程式設計,利用CSocket實現一個基於TCP實現一個QQ聊天程式。你會發現,MFC要比WIN32 簡單的多。但是如果你不理解具體API socket基礎知識,你可能會覺得有一點費解。 所以在開始之前 我還是請大家先看看http://bl
仿班級聊天室(DOM原型法)並且用localStorage儲存訊息記錄
第一部分:CSS程式碼 * { margin: 0px;  
[原始碼和報告分享]基於java 的仿QQ聊天工具
概要設計 在客戶端:當用戶登入後,生成唯一的socket, 存放在Client實體類中,在整個客戶端就一個Client類和一個socket。有一個視窗控制器——ChatUIList,用來記錄使用者和好友聊天框是否開啟,當收到訊息後,首先在ChatUIList中查詢是否有好友的視窗,如果沒有則新建聊天框彈出並
201771010126 王燕《面向物件程式設計(Java)》第十四周學習總結(測試程式11)
實驗十四 Swing圖形介面元件 理論部分: 不使用佈局管理器 有時候可能不想使用任何佈局管理器,而只 是想把元件放在一個固定的位置上。下面是將一 個元件定位到某個絕對定位的步驟: 1)將佈局管理器設定為null。 2)將元件新增到容器中。 3)指定想要放置的位置和大小。 f
微信小程式二維碼(JAVA)
前言 最近在做小程式相關的專案,之前也在網上找過很多資料,遇到不少坑,和大家分享一下成果。 簡介 小程式獲取二維碼有官網三種介面: POST https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode?access