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

正文內(nèi)容

基于linux聊天客戶端模塊設計與實現(xiàn)論文終稿(編輯修改稿)

2025-07-15 14:17 本頁面
 

【文章內(nèi)容簡介】 信息。登陸界面:首先與服務器連接,如果連接失敗,文件描述符室一個非正數(shù),通過判斷,以對話框的形式通知用戶連接失敗。如果用戶名與密碼不匹配或者重復登陸,服務器端返回協(xié)議“error”,如果登陸成功,服務器返回協(xié)議“ok”,客戶端通過對協(xié)議的判斷切換到聊天界面。聊天界面:首先判斷客戶端需求,通過用戶的選擇,向服務器發(fā)送一系列已經(jīng)協(xié)商好的通信協(xié)議;如:選擇私聊則發(fā)送“所選用戶名+聊天內(nèi)容”,選擇群聊則發(fā)送“All+聊天內(nèi)容”。2.接收來自服務器端的信息。通過服務器端的分析,服務器會向客戶端發(fā)送信息,同時客戶端當監(jiān)聽到有信息可接收時,會讀出相應信息存放到內(nèi)存當中。3.完成客戶端包括注冊、登錄、聊天三大板塊。在完成以上三大板塊的過程中,應該注意三大板塊之間的聯(lián)系。4.全部完成后,將客戶端程序移植到ARM開發(fā)板上并實現(xiàn)。有了以上簡單的分析,可以知道,解決上述四個問題,即完成了該聊天系統(tǒng)的核心。補充:由于技術(shù)方面的欠缺,我的聊天室系統(tǒng)沒有應用數(shù)據(jù)庫知識存放聊天記錄。聊天記錄是以隱藏文件的形式存放在整個系統(tǒng)的絕對路徑下。沒有實現(xiàn)留言功能,只有在線才能接收到別人發(fā)送的消息。第三章 系統(tǒng)分析與設計方案 聊天系統(tǒng)客戶端的總體設計要點聊天系統(tǒng)的設計與普通網(wǎng)站的實際所考慮的因素有許多不同之處,普通網(wǎng)站設計需考慮對布局進入大量美化以及動畫設計等等,而聊天室卻只要提供滿足訪客雙方直接實時聊天即可[6]。因此,在設計聊天系統(tǒng)的過程中,必須要考慮好以下幾個設計要點:(一)實現(xiàn)思想在Internet上的聊天程序一般都是以服務器提供服務端連接響應,使用者通過客戶端程序登錄到服務器,就可以與登錄在同一服務器上的用戶交談,這是一個面向連接的通信過程。因此,程序要在TCP/IP環(huán)境下,實現(xiàn)服務器端和客戶端兩部分程序。(二)服務器端工作流程服務器端通過socket( )系統(tǒng)調(diào)用創(chuàng)建一個Socket數(shù)組后(即設定了接受連接客戶的最大數(shù)目),與指定的本地端口綁定bind( ),就可以在端口進行偵聽listen( )。如果有客戶端連接請求,則在數(shù)組中選擇一個空Socket,將客戶端地址賦給這個Socket。然后登錄成功的客戶就可以在服務器上聊天了。(三)客戶端工作流程客戶端程序相對簡單,只需要建立一個Socket與服務器端連接,成功后通過這個Socket來發(fā)送和接收數(shù)據(jù)就可以了。套接字之間的連接過程可以分為三個步驟:服務器監(jiān)聽,客戶端請求,連接確認。服務器監(jiān)聽是服務器端套接字并不定位具體的客戶端套接字,而是處于等待連接的狀態(tài),實時監(jiān)控網(wǎng)絡狀態(tài)??蛻舳苏埱笫侵赣煽蛻舳说奶捉幼痔岢鲞B接請求,要連接的目標是服務器端的套接字。連接確認是指當服務器端套接字監(jiān)聽到或者說接收到客戶端套接字的連接請求,它就響應客戶端套接字的請求,建立一個新的線程,把服務器端套接字的描述發(fā)給客戶端,一旦客戶端確認了此描述,連接就建立好了。 聊天系統(tǒng)客戶端的設計步驟及功能模塊劃分(一)聊天系統(tǒng)客戶端工作原理圖31輸入錯誤重新填寫用戶運行客戶端應用程序填寫用戶名密碼提交服務器用戶信息合法,用戶登陸到聊天室 接收服務器端的在線用戶列表接收消息接收好友下線或登陸消息發(fā)送消息(群聊、私聊)圖31 工作原理圖 聊天系統(tǒng)客戶端各功能模塊(一)注冊功能模塊用戶進入聊天系統(tǒng),點擊登錄模塊上的注冊按鈕,進入注冊頁面。頁面框架由QT語言編譯。功能有填寫用戶名、密碼、重復密碼;注冊界面顯示用戶名、密碼輸入規(guī)則。當用戶輸入用戶名、密碼時,檢驗用戶輸入是否合法,輸入合法則通過Socket建立于服務器的連接,向服務器發(fā)送用戶名、密碼。服務器端對所接收的內(nèi)容進行核對,如用戶名密碼可用,則返回相應信息。客戶端接收到服務器發(fā)送過來的信息后,通知用戶是否注冊成功。注冊模塊發(fā)送到服務器的通信協(xié)議為:“regist:用戶名:密碼名”。 部分源碼如下:regist::regist(){ //用戶界面代碼}void regist::sure_fun(){ int fd2。 char *p。 char buf[10]=。 fd2=getfd()。 QString tmp,str。 if(name_linetext()==all){ //用戶名不能為all QMessageBox::warning(this,tr(warning),tr(this name unable used!) )。 name_lineclear()。 return。 } if(name_linetext()==){ //未輸入用戶名提示信息 QMessageBox::warning(this,tr(warning),tr(input a user name!))。 return。 } if(passwd_linetext()==){ //未輸入密碼提示信息 QMessageBox::warning(this,tr(warning),tr(input a passwd!))。 return。 } QString passwd1,passwd2。 passwd1=passwd_linetext()。 passwd2=repasswd_linetext()。 if(passwd1==passwd2){ //確保倆次密碼相同 tmp=regist。 tmp=tmp+39。:39。 tmp=tmp+name_linetext()。 tmp=tmp+39。:39。 tmp=tmp+passwd_linetext()。 p=(char *)qPrintable(tmp)。 int i。 i=write(fd2,p,strlen(p))。 //向服務器寫內(nèi)容 if(i=0){ //寫入失敗 QMessageBox::information(this,tr(regist),tr(server no answer!))。 return。 } read(fd2,buf,5)。 //從服務器讀內(nèi)容 if(strcmp(buf,ok)==0){ //注冊成功提示消息 QMessageBox::information(this,tr(regist),tr(successfully!))。 close()。 } else{ QMessageBox::warning(this,tr(error!),tr(the user name has been used!))。 name_lineclear()。 return。 } } else{ QMessageBox::warning(this,tr(error!),tr(twice passwd is different !))。 passwd_lineclear()。 repasswd_lineclear()。 return。 } }(二)登錄功能模塊用戶進入聊天系統(tǒng)則直接進入登陸模塊[7],界面直接提示輸入用戶名、密碼;當已經(jīng)注冊完成賬號時,根據(jù)提示輸入用戶信息。客戶端通過Socket建立與服務器的連接,并將信息傳遞給服務器,由服務器判斷輸入是否正確。如用戶名與密碼不相符,則提示信息。信息輸入正確,則登陸成功,界面切換到聊天界面。登錄模塊發(fā)送到服務器的通信協(xié)議為:“l(fā)ogin:用戶名:密碼”。部分源碼如下:login::login(){ //登陸界面} void login::login_fun(){ int fd1=getfd()。 char buf[100]=。 char all_name[4000] = 。 QString info,a,b。 a=ledit1text()。 b=ledit2text()。 info = QString(login)+39。:39。+a+39。:39。+b。 write(fd1,(char *)qPrintable(info),())。 //向服務器寫入內(nèi)容 read(fd1,buf,sizeof(buf))。 //從服務器讀入內(nèi)容 if(strcmp(buf,relogin) == 0) //登陸失敗提示消息 { QMessageBox::information(this,login error!,Repeat login!!!)。 return。 } if(strcmp(buf,ok) == 0){
點擊復制文檔內(nèi)容
試題試卷相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1