聶維 劉小豫
(咸陽師范學院計算機學院,陜西 咸陽 712000)
伴隨著各種各樣的聊天軟件的產生,人們越來越依賴聊天軟件。但是目前的聊天軟件還存在一些局限性。現在我們使用的聊天軟件都只適用于Windows操作系統[1,2],而并不適用于Linux操作,這對使用Linux操作系統的用戶造成了極大的不便。由于Linux操作系統的開源性,Linux越來越受用戶和商家的喜愛[3]。所以,將Linux操作系統和通訊軟件結合起來不僅加速了Linux的普及,也豐富了Linux下的應用軟件。
Linux下的聊天室需滿足人們日常生活中基本交流的要求。對于用戶來說,可以注冊賬號,登錄系統,修改密碼,查看聊天記錄,為用戶顯示當前的在線人數,以及與某一特定的用戶進行私聊,或者與眾多用戶進行群聊,同時滿足用戶與用戶之間傳輸文件的要求。對于管理員來說,可以管理所有的用戶,實現對某一用戶進行踢下線的功能,并且同時可以擁有普通用戶的所有權限。
本聊天室服務的用戶主要有兩類:普通注冊用戶和管理員。
3.1.1 用戶功能
普通用戶首先需要在系統中注冊,創建自己的用戶名和登錄密碼,登錄后才能使用本系統的其他功能,例如,修改密碼,與某一用戶進行私聊,與所有用戶進行群聊,傳輸文件,或者查看當前的在線人數。根據系統需求分析,系統功能結構圖如圖1所示。

圖1 用戶功能模塊圖
3.1.2 管理員功能
管理員主要負責管理普通用戶的信息和用戶操作。管理員具有以下功能:(1)登錄:管理員在對用戶進行管理之前,必須先要登錄系統,在登錄界面輸入管理員賬號和密碼,成功后就可以對用戶進行操作了;(2)聊天;(3)傳輸文件:管理員對文件傳輸進行管理;(4)創建分組:管理員可以對用戶創建不同的分組;(5)踢下線:管理員對于不遵守聊天秩序的用戶,有權將該用戶踢線下。
系統實現主要從聊天室管理模塊以及基礎功能兩個模塊進行詳細設計與實現。
3.2.1 聊天室管理模塊
聊天室管理模塊是由管理員進行操作的,管理員登錄系統之后,可以創建聊天室分組,并且對不遵守聊天室規則的用戶進行踢下線操作。
(1)創建聊天室分組操作:用戶在首頁點擊群聊按鈕后,調用public.c中的show talk_p()函數,調用private_t_p()函數創建出群聊界面,在群聊界面中的join框中輸入聊天室名字,將輸入的信息傳入到start_talk_p()中,在該函數中向服務器端發送消息。服務器端接收消息后,進入work.c文件work()函數中,根據不同的消息類型處理信息,并調用join_room()函數,將聊天室信息傳入join_room()函數中,在該函數中調用數據庫插入函數join_record()向數據庫中的聊天室信息表中插入聊天室信息,聊天室創建完成。
(2)管理員踢下線操作:首先在客戶端首頁點擊下線按鈕,該按鈕會調用root_show()函數,在root_show函數中調用創建踢下線的界面函數root_show_p(),在此界面中輸入要踢下線的用戶名,并將該用戶名傳入該函數中,然后點擊下線按鈕,并調用kill_people()函數,在kill_people函數中向服務器端發送下線消息。服務器端接收到消息后,在work.c文件中根據消息類型downline調用相應的函數talk_kill_people()關閉該用戶與服務器的連接。
3.2.2 基礎功能模塊
基礎功能模塊是針對普通用戶進行操作的,用戶登錄系統后,進入首頁,可以執行群聊,傳輸文件,私聊,查看聊天記錄和傳輸文件等功能。
(1)私聊操作:用戶在登錄系統后,首頁會出現private私聊的按鈕,點擊該按鈕,會調用show talk_p()函數,在show talk_p()中調用show talk()函數,就可以進入到私聊界面中,并在該頁面中輸入私聊用戶名。并點擊start按鈕,在input框中輸入要發送的私聊信息,點擊goon按鈕,調用send()函數向服務器發送消息。服務器接收到消息后進入work.c文件中,服務器根據消息類型選擇私聊處理函數show talk_p(),在該函數中會調用send()函數向私聊用戶發送私聊信息,同時將聊天信息存放到數據庫中的消息表中。
(2)傳輸文件操作:點擊文件傳輸按鈕,進入ftp.c中的on_button_c()函數,該函數彈出選擇文件的窗口,內部調用on_file_select_ok()函數選擇文件,temp_file()函數中調用send_file()函數發送文件。接收方點擊recv按鈕,接收文件。
在調查了Linux操作系統的現狀的基礎上,完成了基于Linux下的聊天室的設計與實現。該聊天室主要實現了注冊、登錄、私聊、群聊、顯示在線人數、查看聊天記錄、傳輸文件以及用戶踢下線的功能。該系統基本能夠滿足Linux用戶的聊天需求。