freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

linux平臺下的聊天軟件的設(shè)計與開發(fā)—計算機畢業(yè)設(shè)計論文(編輯修改稿)

2024-09-20 11:23 本頁面
 

【文章內(nèi)容簡介】 并不是定義了網(wǎng)絡(luò)的層次結(jié)構(gòu),而是描述了一種網(wǎng)絡(luò)程序運行的方式。客戶及/服務(wù)器模型將網(wǎng)絡(luò)應(yīng)用程序分為客戶和服務(wù)器兩部分??蛻舴綄Ψ?wù)器方發(fā)送信息請求,服務(wù)器方對其做出相應(yīng)回答,提供服務(wù)。在TCP/IP網(wǎng)絡(luò)應(yīng)用中,多數(shù)網(wǎng)絡(luò)應(yīng)用程序是使用客戶/服務(wù)器模型設(shè)計的。服務(wù)程序通常在一個眾所周知的地址監(jiān)聽對服務(wù)的請求,也就是說,服務(wù)進程一直處于休眠狀態(tài),直到一個客戶程序提出了請求信息。此時,服務(wù)程序被驚醒并且為客戶提供服務(wù),對客戶的請求做出適當(dāng)?shù)姆磻?yīng)。雖然基于連接的服務(wù)是設(shè)計客戶/服務(wù)器應(yīng)用程序的標(biāo)準,但有些服務(wù)也是可以通過數(shù)據(jù)報Socket提供的。當(dāng)建立服務(wù)器程序時,應(yīng)該將服務(wù)器程序設(shè)計成等候客戶的請求。TCP傳輸層通過協(xié)議端口和應(yīng)用程序通信,也就是說,為了接收客戶請求,服務(wù)器程序必須對傳輸層的一個特定協(xié)議端口進行偵聽。當(dāng)服務(wù)器配置socket接口時,它使用bind()函數(shù)讓socket執(zhí)行體登記一個協(xié)議端口。也就是說,程序告訴socket執(zhí)行體使用哪一個協(xié)議端口進行數(shù)據(jù)傳送。Socket執(zhí)行體接著告訴傳輸層某個特定協(xié)議端口已被使用,并將其收到的所有數(shù)據(jù)傳送給Socket API。 采用UDP方式連接采用UDP協(xié)議的程序不需要有服務(wù)器,兩個程序之間可以通過無連接的方式進行通信,所以無連接是使用UDP協(xié)議程序的一個顯著特點。使用無連接協(xié)議的程序和使用面向連接協(xié)議的服務(wù)器程序之間的主要相似之處是它們都必須對一個協(xié)議端口進行偵聽。例如,無連接和連接服務(wù)器程序必須在協(xié)議端口偵聽客戶請求。同樣,由于無連接客戶程序沒有和遠地主機建立直接連接,所以它也必須對協(xié)議端口進行偵聽,以便接收以對它服務(wù)請求產(chǎn)生的數(shù)據(jù)報應(yīng)答。Socket API中的bind()函數(shù)讓程序?qū)⒁粋€本地地址(包括主機地址和協(xié)議端口)和一個Socket聯(lián)系起來。下面程序行顯示了一個典型的函數(shù)調(diào)用:result=bind ( socket_handle, local_structure socket_address, address_ length)無連接客戶程序也對一個協(xié)議端口進行偵聽。使用無連接協(xié)議的程序不和遠地主機建立直接連接。無連接客戶程序使用數(shù)據(jù)報發(fā)送網(wǎng)絡(luò)服務(wù)請求,它不建立點到點連接。因此無連接客戶程序必須在一個協(xié)議端口,對應(yīng)答數(shù)據(jù)報進行偵聽。與服務(wù)器程序一樣,無連接客戶程序也使用bind函數(shù)讓Socket執(zhí)行體登記協(xié)議端口。也就是說,類似服務(wù)器程序,無連接客戶程序告訴Socket執(zhí)行體使用哪個協(xié)議端口進行數(shù)據(jù)傳輸。Socket執(zhí)行體處理傳輸層內(nèi)UDP軟件模塊和客戶程序之間的接口。 方案選擇綜合以上分析,本軟件開發(fā)選擇方案如下:Linux系統(tǒng)采用C語言開發(fā), TCP方式進行連接。采用C/S結(jié)構(gòu)。系統(tǒng)界面美觀內(nèi)容豐富,很好的實現(xiàn)了與用戶的交互。 總體設(shè)計方案為實現(xiàn)網(wǎng)絡(luò)聊天的功能,該軟件采用Socket編程,服務(wù)器與客戶端采用了TCP/IP方式連接,在設(shè)計聊天方案時,實行將所有信息發(fā)往服務(wù)器端,再由服務(wù)器進行分別處理的思路,服務(wù)器端是所有信息的中心。 服務(wù)器功能模塊劃分服務(wù)器負責(zé)向各個客戶端發(fā)布系統(tǒng)消息。接受來自客戶端的各種信息并分別處理。針對這些操作,服務(wù)器做了如下的模塊劃分:處理登陸信息模塊:檢查登陸信息是否正確,并向客戶端返回登陸信息,如信息正確。就將在線用戶發(fā)給該用戶,并將該用戶的狀態(tài)發(fā)給各在線用戶。同時在服務(wù)器端顯示出來。處理聊天信息模塊:轉(zhuǎn)發(fā)消息給指定的用戶。處理申請信息模塊:通過用戶申請模塊進行新用戶的注冊,保存該用戶信息。發(fā)布系統(tǒng)消息模塊:將用戶上下線的消息發(fā)給各客戶端,并改寫用戶在服務(wù)器端和客戶端的狀態(tài)。服務(wù)器功能示意圖:服務(wù)器端處理申請信息轉(zhuǎn)發(fā)聊天信息處理登陸信息發(fā)布系統(tǒng)消息圖41 服務(wù)器功能模型 客戶端功能模塊劃分客戶端主要負責(zé)處理用戶的操作信息,當(dāng)用戶做出相應(yīng)的動作時客戶端應(yīng)該能夠及時地做出相應(yīng),當(dāng)GTK圖形程序檢測到鼠標(biāo)點擊時,將觸發(fā)一個事件,對該事件進行動作的定義和函數(shù)的編寫便可完成相應(yīng)的動作。因此,針對這些操作特性,將客戶端模塊進行如下劃分:登陸功能模塊:建立與服務(wù)器的連接并登陸,能顯示登陸錯誤信息。界面顯示模塊:將在線好友顯示在好友列表中,并顯示其當(dāng)前狀態(tài)。聊天功能模塊:處理各種聊天信息,并判斷消息類型。離線消息模塊:接收和發(fā)送離線消息,對離線消息進行處理。配置信息模塊:提供基本的軟件配置操作??蛻舳斯δ苁疽鈭D:登陸到服務(wù)器客戶端界面顯示模塊配置信息模塊聊天功能模塊離線消息模塊 息圖42 客戶端功能模型 消息標(biāo)識的定義define GIF_LOGIN_MSG 1 用戶登錄define GIF_CALL_MSG 2 用戶呼叫define GIF_ADDRLIST_MSG 3更新聯(lián)系人列表信息define GIF_ADD_CONTACTS_MSG 4 添加連接信息define GIF_DELETE_CONTACTS_MSG 5 刪除連接信息define GIF_CHAT_MSG 6聊天信息define GIF_DISCONNECT_MSG 7 用戶下線消息define GIF_SUCCESS_N_ERROR_MSG 8消息請求成功或失敗信息define GIF_OFFLINE_REQUEST_MSG 9 發(fā)送離線消息define GIF_OFFLINE_MSG 10 離線消息define GIF_OFFLINE_DELETE_MSG 11 刪除離線消息用戶發(fā)送消息成功或失敗定義:define GIF_ERROR_LOGIN_INCORRECT 101 錯誤的登陸信息define GIF_SUCCESS_ADD_CONTACTS 102 添加連接信息成功define GIF_ERROR_ADD_CONTACTS 103 添加連接信息錯誤define GIF_SUCCESS_DELETE_CONTACTS 104 刪除連接信息成功define GIF_ERROR_DELETE_CONTACTS_NOT_A_CONTACT 105 用戶離線define GIF_ERROR_DELETE_CONTACTS_NOT_A_MEMBER 106 無指定用戶 消息結(jié)構(gòu)體的設(shè)計消息頭:typedef struct _gifhdr_t{ unsigned int type。 unsigned int length。 char sender[10]。 char receiver[10]。 unsigned int reserved。}gifhdr_t。用戶信息結(jié)構(gòu):typedef struct _users_t{ char loginid[20]。 char password[20]。}users_t。在線用戶信息結(jié)構(gòu):typedef struct _online_users_t{ char loginid[20]。 int sockfd。}online_users_t。用戶聯(lián)系人信息結(jié)構(gòu):typedef struct _user_contacts_t{ char loginid[20]。}user_contacts_t。用戶當(dāng)前狀態(tài):typedef struct _user_status_t{ char loginid[20]。 unsigned int status。}user_status_t。離線消息存儲時離線消息結(jié)構(gòu):typedef struct _offline_msgs_t{ char sender[20]。 char dateserial[20]。 unsigned int new。 char message[1024]。}offline_msgs_t。用戶發(fā)送離線消息結(jié)構(gòu):typedef struct _offline_msgs_send_t{ char sender[20]。 char dateserial[20]。 unsigned int new。 unsigned int length。}offline_msgs_send_t。4 軟件流程本節(jié)主要敘述了該軟件的整體運作流程,包括服務(wù)器和客戶端對消息的處理等流程,通過本節(jié)將能夠?qū)浖墓ぷ髁鞒痰玫揭粋€總體的認識。 服務(wù)器消息處理流程服務(wù)器運行后即處于監(jiān)聽狀態(tài),當(dāng)監(jiān)聽到有連接請求時服務(wù)器進入消息處理流程,因為服務(wù)器為并發(fā)服務(wù)器,所以可以同時對多個請求做出相應(yīng)。具體流程如下圖所示:圖 43 服務(wù)器流程圖 客戶端操作流程這款聊天軟件的客戶端采用圖形化用戶接口方式,GTK圖形界面的主要特點就是事件觸發(fā),當(dāng)處理引擎接收到某一窗體消息時,處理引擎就會按照事先編寫好的函數(shù)作相應(yīng)的處理動作,下圖總體上描述了客戶端軟件的操作處理流程:圖 4-4 客戶端操作流程圖 客戶端消息發(fā)送和接收流程客戶端運行后首先要用戶登錄到服務(wù)器,如果登陸成功服務(wù)器會將在線的用戶聯(lián)系人列表發(fā)送給客戶端,此時客戶端即可顯示有哪些好友在線而哪些是離線的。當(dāng)用戶點擊在線好友時便會彈出一個聊天信息窗體,該窗體用于發(fā)送和接收用戶的聊天信息。當(dāng)用戶點擊離線用戶時便會觸發(fā)一個離線消息事件,該事件通過服務(wù)器轉(zhuǎn)發(fā)方式發(fā)送給離線用戶,當(dāng)對方上線時便可查看該離線消息。具體流程如下圖所示:圖 45 客戶端消息處理流程圖 申請用戶流程運行用戶管理程序添加用戶顯示用戶刪除用戶
點擊復(fù)制文檔內(nèi)容
黨政相關(guān)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1