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

正文內(nèi)容

linux平臺(tái)下的聊天軟件的設(shè)計(jì)與開發(fā)—計(jì)算機(jī)畢業(yè)設(shè)計(jì)論文-全文預(yù)覽

  

【正文】 以上所創(chuàng)建的視圖和存儲(chǔ)空間都還是空的,要想將數(shù)據(jù)從其中顯示出來(lái)還需要使用到下面的函數(shù):下面的函數(shù)負(fù)責(zé)從指定的存儲(chǔ)模型中取出新行的itergtk_tree_store_append (store, amp。但這個(gè)視圖中并沒有定義列信息,業(yè)就是說(shuō)這是一個(gè)空的無(wú)任何用處的列表視圖,要將用戶的信息顯示出來(lái),還需要使用到以下的函數(shù):新建一個(gè)圖像類型的繪制方式renderer = gtk_cell_renderer_pixbuf_new ()。用戶列表和離線消息列表的構(gòu)建是通過(guò)下面的函數(shù)來(lái)實(shí)現(xiàn)的:新建一個(gè)數(shù)據(jù)的存儲(chǔ)模型store= gtk_tree_store_new (2, G_TYPE_STRING, GDK_TYPE_PIXBUF)。同時(shí)將用戶名寫入消息頭結(jié)構(gòu)體,并將密碼隨同數(shù)據(jù)字段一起發(fā)送給服務(wù)器。gdk_threads_leave()。void gif_call_client_for_chat(GtkTreeSelection *selection, gpointer data):當(dāng)用戶點(diǎn)擊聯(lián)系人時(shí)會(huì)產(chǎn)生一個(gè)消息事件,程序根據(jù)用戶所選擇的聯(lián)系人生成聊天窗口,并對(duì)該窗體進(jìn)行初始化。enum{ OFFLINE_NEW_PIXMAP, OFFLINE_SENDER_TEXT, OFFLINE_DATESERIAL_TEXT, OFFLINE_MSG_TEXT, OFFLINE_COLUMNS}。GtkTreeModel *offline_selected_model:定義離線消息查詢數(shù)據(jù)管理接口。上面的窗體是客戶端用戶在使用中會(huì)經(jīng)常使用到的一些窗口事件,這些部件統(tǒng)一起來(lái)便形成了一套完整的客戶端圖形用戶界面。圖 410 系統(tǒng)消息窗口離線消息窗口:當(dāng)用戶點(diǎn)擊主窗口中的Offline按鈕時(shí),該窗體被激活。圖 47 程序主窗口窗體中包含按鈕:Conn:登陸按鈕,點(diǎn)擊可激活登錄窗口Add: 添加好友按鈕Conf:程序配置按鈕Offline:查看離線消息按鈕Conn菜單:包含Conn、Disconnect和Quit按鈕Contacts菜單:包含Add、Delete和Offline按鈕Help菜單:包含About按鈕聯(lián)系人列表:Status列:顯示聯(lián)系人狀態(tài)信Contacts列:顯示好友列表Available顯示表示用戶有好友當(dāng)用戶無(wú)好友時(shí)顯示Not Available登錄窗口:當(dāng)用戶點(diǎn)擊主窗口中的Conn按鈕時(shí),該窗體被激活。被添加為好友文件: 該文件中保存了有哪些用戶把當(dāng)前用戶添加為好友。在編程時(shí)主要使用fopen fread fwrite fclose等函數(shù)對(duì)文件進(jìn)行操作,被打開文件的操作權(quán)限由fopen的參數(shù)來(lái)決定,讀取控制由fread來(lái)完成,fwrite主要負(fù)責(zé)向文件中寫入新的信息。離線消息處理模塊:當(dāng)服務(wù)器判斷用戶所請(qǐng)求的信息為讀取離線消息后,服務(wù)器會(huì)去讀用戶的離線消息文件,如果該文件中有被標(biāo)識(shí)為新的離線消息時(shí),服務(wù)器將把該消息提取出來(lái)發(fā)送給用戶,同時(shí)把該消息標(biāo)識(shí)為已讀。刪除好友信息處理模塊:當(dāng)服務(wù)器接收到用戶的該消息請(qǐng)求時(shí),服務(wù)器根據(jù)用戶所提供的好友用戶名來(lái)刪除被指定的好友,同時(shí)將用戶聯(lián)系人表進(jìn)行更新。獲取系統(tǒng)時(shí)間函數(shù):char *gif_get_system_time()該函數(shù)取出當(dāng)前系統(tǒng)時(shí)間并隨消息一同發(fā)出,以便讓用戶能更好的了解到消息是何時(shí)發(fā)出的。 服務(wù)器主要函數(shù)和變量套接字描述字:int sockfd, client_sockfd套接字地址結(jié)構(gòu):struct sockaddr_in servAddr, cliAddr線程id標(biāo)識(shí):pthread_t pthd線程調(diào)用函數(shù):void gif_handle_client(int client_sockfd)服務(wù)器主體函數(shù)只負(fù)責(zé)了套接字的創(chuàng)建、幫定和監(jiān)聽任務(wù),一旦服務(wù)器接收到了來(lái)自客戶端的消息后,就會(huì)創(chuàng)建一個(gè)線程來(lái)處理該連接,當(dāng)線程創(chuàng)建后它就會(huì)調(diào)用該函數(shù)對(duì)客戶消息進(jìn)行處理。當(dāng)用戶點(diǎn)擊在線好友時(shí)便會(huì)彈出一個(gè)聊天信息窗體,該窗體用于發(fā)送和接收用戶的聊天信息。}offline_msgs_send_t。用戶發(fā)送離線消息結(jié)構(gòu):typedef struct _offline_msgs_send_t{ char sender[20]。 char dateserial[20]。用戶當(dāng)前狀態(tài):typedef struct _user_status_t{ char loginid[20]。 int sockfd。用戶信息結(jié)構(gòu):typedef struct _users_t{ char loginid[20]。 char sender[10]。離線消息模塊:接收和發(fā)送離線消息,對(duì)離線消息進(jìn)行處理。服務(wù)器功能示意圖:服務(wù)器端處理申請(qǐng)信息轉(zhuǎn)發(fā)聊天信息處理登陸信息發(fā)布系統(tǒng)消息圖41 服務(wù)器功能模型 客戶端功能模塊劃分客戶端主要負(fù)責(zé)處理用戶的操作信息,當(dāng)用戶做出相應(yīng)的動(dòng)作時(shí)客戶端應(yīng)該能夠及時(shí)地做出相應(yīng),當(dāng)GTK圖形程序檢測(cè)到鼠標(biāo)點(diǎn)擊時(shí),將觸發(fā)一個(gè)事件,對(duì)該事件進(jìn)行動(dòng)作的定義和函數(shù)的編寫便可完成相應(yīng)的動(dòng)作。同時(shí)在服務(wù)器端顯示出來(lái)。 服務(wù)器功能模塊劃分服務(wù)器負(fù)責(zé)向各個(gè)客戶端發(fā)布系統(tǒng)消息。 方案選擇綜合以上分析,本軟件開發(fā)選擇方案如下:Linux系統(tǒng)采用C語(yǔ)言開發(fā), TCP方式進(jìn)行連接。因此無(wú)連接客戶程序必須在一個(gè)協(xié)議端口,對(duì)應(yīng)答數(shù)據(jù)報(bào)進(jìn)行偵聽。Socket API中的bind()函數(shù)讓程序?qū)⒁粋€(gè)本地地址(包括主機(jī)地址和協(xié)議端口)和一個(gè)Socket聯(lián)系起來(lái)。 采用UDP方式連接采用UDP協(xié)議的程序不需要有服務(wù)器,兩個(gè)程序之間可以通過(guò)無(wú)連接的方式進(jìn)行通信,所以無(wú)連接是使用UDP協(xié)議程序的一個(gè)顯著特點(diǎn)。TCP傳輸層通過(guò)協(xié)議端口和應(yīng)用程序通信,也就是說(shuō),為了接收客戶請(qǐng)求,服務(wù)器程序必須對(duì)傳輸層的一個(gè)特定協(xié)議端口進(jìn)行偵聽。服務(wù)程序通常在一個(gè)眾所周知的地址監(jiān)聽對(duì)服務(wù)的請(qǐng)求,也就是說(shuō),服務(wù)進(jìn)程一直處于休眠狀態(tài),直到一個(gè)客戶程序提出了請(qǐng)求信息??蛻魴C(jī)/服務(wù)器模型也是一種網(wǎng)絡(luò)模型,但與前述的網(wǎng)絡(luò)模型不同,它并不是定義了網(wǎng)絡(luò)的層次結(jié)構(gòu),而是描述了一種網(wǎng)絡(luò)程序運(yùn)行的方式。因此,當(dāng)應(yīng)用程序出現(xiàn)了錯(cuò)誤的時(shí)候我們就需要程序能提供給我們出錯(cuò)的信息,這樣用戶就能夠很快的找出具體的出錯(cuò)原因,以便尋找合理的途徑去解決它。 客戶端性能需求客戶端只需要連接到服務(wù)器便可以進(jìn)行任務(wù)的處理工作,因此客戶端的主要性能要求為圖形界面運(yùn)行的穩(wěn)定性和對(duì)出錯(cuò)信息的及時(shí)反映。應(yīng)該具有易用、美觀的圖形界面。申請(qǐng)新用戶的功能。由于設(shè)計(jì)該軟件的主要目的是深入的學(xué)習(xí)Linux平臺(tái)上應(yīng)用程序的編寫方法,本系統(tǒng)將采用GNU的理論方法進(jìn)行開發(fā)。那樣用戶可以試著修正某個(gè)bug引起的問題,然后繼續(xù)查找另一個(gè)bug。運(yùn)行程序,設(shè)置所有的能影響程序運(yùn)行的東西。Linux系統(tǒng)下的gcc(GNU C Compiler)是GNU推出的功能強(qiáng)大、性能優(yōu)越的多平臺(tái)編譯器,是GNU的代表作品之一。 編程語(yǔ)言和編程工具簡(jiǎn)介因?yàn)镃語(yǔ)言是平臺(tái)適應(yīng)性最強(qiáng)的語(yǔ)言,差不多每種平臺(tái)上都會(huì)有一個(gè)C編譯器。另一方面,有另一個(gè)工具(glade)可以用來(lái)把這些XML文件直接生成相應(yīng)的Gtk+/Gtkmm代碼。Gnome的開發(fā)架構(gòu)包含以下一些內(nèi)容:1. 非Gnome 庫(kù):2. Gnome庫(kù):3. 其他庫(kù)這些庫(kù)一般被使用在Gnome應(yīng)用程序中,但它不是Gnomelibs 專屬的部分。GTK本質(zhì)上是面向?qū)ο蟮膽?yīng)用程序編程接口(API )。在用Gtk+開發(fā)Gnome的過(guò)程中,由于實(shí)際需要,在上面的構(gòu)件基礎(chǔ)上,又開發(fā)了一些新構(gòu)件。Gtk+是基于LGPL授權(quán)的。GNU 計(jì)劃和自由軟件基金會(huì)(the Free Software Foundation FSF)于 1984 年創(chuàng)辦。 區(qū)分不同應(yīng)用程序進(jìn)程間的網(wǎng)絡(luò)通信和連接,套接字主要有3個(gè)參數(shù):通信的目的IP地址、使用的傳輸層協(xié)議(TCP或UDP)和使用的端口號(hào)。反觀UDP由于排除了信息可靠傳遞機(jī)制,將安全和排序等功能移交給上層應(yīng)用來(lái)完成,極大降低了執(zhí)行時(shí)間,使速度得到了保證。每一個(gè)數(shù)據(jù)報(bào)的前8個(gè)字節(jié)用來(lái)包含報(bào)頭信息,剩余字節(jié)則用來(lái)包含具體的傳輸數(shù)據(jù)。與我們所熟知的TCP(傳輸控制協(xié)議)協(xié)議一樣,UDP協(xié)議直接位于IP(網(wǎng)際協(xié)議)協(xié)議的頂層。TCP 中的多路技術(shù):大量上層同時(shí)會(huì)話在單連接時(shí)進(jìn)行多路復(fù)用。暫停機(jī)制允許設(shè)備監(jiān)測(cè)丟失的包并請(qǐng)求重發(fā)。這對(duì)應(yīng)用程序有利,因?yàn)樵诒凰统?TCP 之前應(yīng)用程序不需要?jiǎng)澐殖蓧K,TCP 可以將字節(jié)整合成字段,然后發(fā)送給IP。網(wǎng)絡(luò)IP地址和端口號(hào)的連接要達(dá)到唯一的標(biāo)識(shí),我們稱之為“套接字”或“端點(diǎn)”。TCP:傳輸控制協(xié)議(TCP:Transmission Control Protocol)傳輸控制協(xié)議是一個(gè) TCP/IP 組中能夠?qū)崿F(xiàn)可靠數(shù)據(jù)傳送的傳輸層協(xié)議,并通過(guò)順序響應(yīng)能實(shí)現(xiàn)對(duì)應(yīng)用程序的虛擬連接服務(wù),在必要的時(shí)候進(jìn)行包轉(zhuǎn)發(fā)。而且,無(wú)服務(wù)器的通訊軟件,是以機(jī)器為通訊單元的,而有服務(wù)器的聊天軟件是以人為通訊單元的。網(wǎng)絡(luò)聊天軟件在國(guó)外有ICQ等,在國(guó)內(nèi)主要有OICQ、Ticq和一些基于網(wǎng)頁(yè)的即時(shí)通訊工具,像Chinaren網(wǎng)站上的WebMaster等等,都做得即美觀,且功能強(qiáng)大,OICQ現(xiàn)在擁有非常大的用戶群。因此制作一個(gè)Linux 操作系統(tǒng)下的擁有人性化界面的實(shí)時(shí)通訊工具,將給那些剛剛接觸Linux操作系統(tǒng)的用戶帶來(lái)極大的方便,而且通
點(diǎn)擊復(fù)制文檔內(nèi)容
黨政相關(guān)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1