聶維 劉小豫
(咸陽(yáng)師范學(xué)院計(jì)算機(jī)學(xué)院,陜西 咸陽(yáng) 712000)
伴隨著各種各樣的聊天軟件的產(chǎn)生,人們?cè)絹?lái)越依賴聊天軟件。但是目前的聊天軟件還存在一些局限性?,F(xiàn)在我們使用的聊天軟件都只適用于Windows操作系統(tǒng)[1,2],而并不適用于Linux操作,這對(duì)使用Linux操作系統(tǒng)的用戶造成了極大的不便。由于Linux操作系統(tǒng)的開(kāi)源性,Linux越來(lái)越受用戶和商家的喜愛(ài)[3]。所以,將Linux操作系統(tǒng)和通訊軟件結(jié)合起來(lái)不僅加速了Linux的普及,也豐富了Linux下的應(yīng)用軟件。
Linux下的聊天室需滿足人們?nèi)粘I钪谢窘涣鞯囊?。?duì)于用戶來(lái)說(shuō),可以注冊(cè)賬號(hào),登錄系統(tǒng),修改密碼,查看聊天記錄,為用戶顯示當(dāng)前的在線人數(shù),以及與某一特定的用戶進(jìn)行私聊,或者與眾多用戶進(jìn)行群聊,同時(shí)滿足用戶與用戶之間傳輸文件的要求。對(duì)于管理員來(lái)說(shuō),可以管理所有的用戶,實(shí)現(xiàn)對(duì)某一用戶進(jìn)行踢下線的功能,并且同時(shí)可以擁有普通用戶的所有權(quán)限。
本聊天室服務(wù)的用戶主要有兩類:普通注冊(cè)用戶和管理員。
3.1.1 用戶功能
普通用戶首先需要在系統(tǒng)中注冊(cè),創(chuàng)建自己的用戶名和登錄密碼,登錄后才能使用本系統(tǒng)的其他功能,例如,修改密碼,與某一用戶進(jìn)行私聊,與所有用戶進(jìn)行群聊,傳輸文件,或者查看當(dāng)前的在線人數(shù)。根據(jù)系統(tǒng)需求分析,系統(tǒng)功能結(jié)構(gòu)圖如圖1所示。
圖1 用戶功能模塊圖
3.1.2 管理員功能
管理員主要負(fù)責(zé)管理普通用戶的信息和用戶操作。管理員具有以下功能:(1)登錄:管理員在對(duì)用戶進(jìn)行管理之前,必須先要登錄系統(tǒng),在登錄界面輸入管理員賬號(hào)和密碼,成功后就可以對(duì)用戶進(jìn)行操作了;(2)聊天;(3)傳輸文件:管理員對(duì)文件傳輸進(jìn)行管理;(4)創(chuàng)建分組:管理員可以對(duì)用戶創(chuàng)建不同的分組;(5)踢下線:管理員對(duì)于不遵守聊天秩序的用戶,有權(quán)將該用戶踢線下。
系統(tǒng)實(shí)現(xiàn)主要從聊天室管理模塊以及基礎(chǔ)功能兩個(gè)模塊進(jìn)行詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)。
3.2.1 聊天室管理模塊
聊天室管理模塊是由管理員進(jìn)行操作的,管理員登錄系統(tǒng)之后,可以創(chuàng)建聊天室分組,并且對(duì)不遵守聊天室規(guī)則的用戶進(jìn)行踢下線操作。
(1)創(chuàng)建聊天室分組操作:用戶在首頁(yè)點(diǎn)擊群聊按鈕后,調(diào)用public.c中的show talk_p()函數(shù),調(diào)用private_t_p()函數(shù)創(chuàng)建出群聊界面,在群聊界面中的join框中輸入聊天室名字,將輸入的信息傳入到start_talk_p()中,在該函數(shù)中向服務(wù)器端發(fā)送消息。服務(wù)器端接收消息后,進(jìn)入work.c文件work()函數(shù)中,根據(jù)不同的消息類型處理信息,并調(diào)用join_room()函數(shù),將聊天室信息傳入join_room()函數(shù)中,在該函數(shù)中調(diào)用數(shù)據(jù)庫(kù)插入函數(shù)join_record()向數(shù)據(jù)庫(kù)中的聊天室信息表中插入聊天室信息,聊天室創(chuàng)建完成。
(2)管理員踢下線操作:首先在客戶端首頁(yè)點(diǎn)擊下線按鈕,該按鈕會(huì)調(diào)用root_show()函數(shù),在root_show函數(shù)中調(diào)用創(chuàng)建踢下線的界面函數(shù)root_show_p(),在此界面中輸入要踢下線的用戶名,并將該用戶名傳入該函數(shù)中,然后點(diǎn)擊下線按鈕,并調(diào)用kill_people()函數(shù),在kill_people函數(shù)中向服務(wù)器端發(fā)送下線消息。服務(wù)器端接收到消息后,在work.c文件中根據(jù)消息類型downline調(diào)用相應(yīng)的函數(shù)talk_kill_people()關(guān)閉該用戶與服務(wù)器的連接。
3.2.2 基礎(chǔ)功能模塊
基礎(chǔ)功能模塊是針對(duì)普通用戶進(jìn)行操作的,用戶登錄系統(tǒng)后,進(jìn)入首頁(yè),可以執(zhí)行群聊,傳輸文件,私聊,查看聊天記錄和傳輸文件等功能。
(1)私聊操作:用戶在登錄系統(tǒng)后,首頁(yè)會(huì)出現(xiàn)private私聊的按鈕,點(diǎn)擊該按鈕,會(huì)調(diào)用show talk_p()函數(shù),在show talk_p()中調(diào)用show talk()函數(shù),就可以進(jìn)入到私聊界面中,并在該頁(yè)面中輸入私聊用戶名。并點(diǎn)擊start按鈕,在input框中輸入要發(fā)送的私聊信息,點(diǎn)擊goon按鈕,調(diào)用send()函數(shù)向服務(wù)器發(fā)送消息。服務(wù)器接收到消息后進(jìn)入work.c文件中,服務(wù)器根據(jù)消息類型選擇私聊處理函數(shù)show talk_p(),在該函數(shù)中會(huì)調(diào)用send()函數(shù)向私聊用戶發(fā)送私聊信息,同時(shí)將聊天信息存放到數(shù)據(jù)庫(kù)中的消息表中。
(2)傳輸文件操作:點(diǎn)擊文件傳輸按鈕,進(jìn)入ftp.c中的on_button_c()函數(shù),該函數(shù)彈出選擇文件的窗口,內(nèi)部調(diào)用on_file_select_ok()函數(shù)選擇文件,temp_file()函數(shù)中調(diào)用send_file()函數(shù)發(fā)送文件。接收方點(diǎn)擊recv按鈕,接收文件。
在調(diào)查了Linux操作系統(tǒng)的現(xiàn)狀的基礎(chǔ)上,完成了基于Linux下的聊天室的設(shè)計(jì)與實(shí)現(xiàn)。該聊天室主要實(shí)現(xiàn)了注冊(cè)、登錄、私聊、群聊、顯示在線人數(shù)、查看聊天記錄、傳輸文件以及用戶踢下線的功能。該系統(tǒng)基本能夠滿足Linux用戶的聊天需求。