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

正文內(nèi)容

畢業(yè)論文--linux下基于c開發(fā)的即時(shí)通訊軟件-閱讀頁

2024-12-06 18:40本頁面
  

【正文】 戶 用戶信息 dictionary string, userinfo userinfolist 系統(tǒng)消息 sequence message offlinemessage 在線用戶 sequence string liveuser 西安工業(yè)大學(xué)畢業(yè)設(shè)計(jì)(論文) 6 服務(wù)器接口函數(shù) 服務(wù)器接口 funcpp,該接口提供以下操作: 登入系統(tǒng) int Logins (string name, string pwd)。 獲取用戶名 int Getusername (string name)。 新增加用戶 int Addfriend(string name,string friname)。 將用戶信息寫入文件 int Writeofflinemesfile()。 發(fā)送消息 int Sendmessage(string recverrname,string sendername,string message,string sendtime)。 獲取是否在線 int Getstat(string name)。 用戶在線 int Loginser(string name)。對服務(wù)器的某一可用端口進(jìn)行監(jiān)聽,以獲得客戶端請求,從而對客戶端請求進(jìn)行處理。服務(wù)器端要求實(shí)現(xiàn)公共數(shù)據(jù)處理,處理公共數(shù)據(jù) ,客戶數(shù)據(jù)資料的存儲與讀取,聊天記錄資料的存取和讀取等??蛻粽埱筇幚硖幚砜蛻舻恼埱?,根據(jù)客戶的請求執(zhí)行相應(yīng)的操作。 由于服務(wù)器與客戶端是相互獨(dú)立的,啟動服務(wù)器后,服務(wù)器等待客戶端與之相連,同時(shí),服務(wù)器本身可以做相應(yīng)的操作:從數(shù)據(jù)庫讀取用戶信息、從文件中讀取用戶信息、將用戶信息保存到數(shù)據(jù)庫中(當(dāng)有新用戶注冊時(shí))、用戶信息保存到文件中(當(dāng)有新用戶注冊時(shí))。其主要是在后臺工作??蛻舳税韵陆缑妫旱顷懡缑妗⒊绦蛑鞔翱?、聊天界面、注冊用戶界面、彈出離線消息窗口、添加刪除好友窗口。當(dāng)用戶點(diǎn)擊在線好友時(shí)便會彈出一個(gè)聊天信息窗體,該窗體用于發(fā)送和接收用戶的聊天信息。 服務(wù)器程序啟動后,如服務(wù)器流程圖所示,通過雙線程,同時(shí)啟動 ICE 的 Server端和 ICE的 Client端,服務(wù)器的 Server端用來等待客戶端的 Client連接,服務(wù)器的Client 端用來連接客戶端的 Server 端。 客戶端服務(wù)器連接后,服務(wù)器通過創(chuàng)建通信器以及適配器,并在通信器中建立Servant 以便客戶端調(diào)用。 Server 端線程負(fù)責(zé)提供連接,供客戶端的 Client 端連接; Client 端負(fù)責(zé)連 接 Client 端。 啟動線程: IceUtil::ThreadControl tst = ststart()。 服務(wù)器端線程實(shí)現(xiàn) 服務(wù)器有兩個(gè)類 serverthread 和 clientthread,繼承自基類 IceUtil::Thread,兩個(gè)類的 public 的 run()方法用來啟動 ICE 線程。 clientthread類的 run方法完成的工作是:初始化通信器,創(chuàng)建適配 器,建立 server端的代理,查找相應(yīng)的 Servant 代理,通過代理調(diào)用相應(yīng)接口。 在服務(wù)器和客戶端連接時(shí),二者相連的端口號直接寫入了配置文件,這樣就無需用硬寫入的方式在程序中就寫入連接的 IP 和端口號,從而方便了我們以后可以修改,而不必改變整個(gè)程序, ICE 的配置文 件的方式提供了這樣的方便。這也適用于你自己的應(yīng)用:你可以輕松地使用 Properties 接口,訪問你為自己的需要而創(chuàng)建的、應(yīng)用專用的屬性。 服務(wù)器端函數(shù)實(shí)現(xiàn) 服務(wù)器端提供以下函數(shù)的實(shí)現(xiàn): 登入系統(tǒng) int Logins (string name, string pwd)。 獲取用戶名 int Getusername (string name)。 獲取好友列表 frilist Retfrilist (string name)。 刪除好友 int Delfriend(string name,string friname)。 讀取文件中用戶信息 offlinemessage Readofflinemesfile()。 發(fā)送離線消息 int Sendofflinemes(string recvername,string sendername,string message,string sendtime)。 獲取是否在線 西安工業(yè)大學(xué)畢業(yè)設(shè)計(jì)(論文) 7 int Getstat(string name)。 獲取系統(tǒng)消息數(shù)量 int Getsysnum()。 獲取當(dāng)前時(shí)間 char* currenttime(char* curtime, const char* format)。 用戶在線 int Loginser(string name)。 即時(shí)通信軟件的客戶端是使用圖形用戶界面來實(shí)現(xiàn)的,程序運(yùn)行后激活主窗體,在主窗體上點(diǎn)擊設(shè)置為敏感狀態(tài)的按鈕就會產(chǎn)生相應(yīng)的事件,該事件將會觸發(fā)一個(gè)消息驅(qū)動所指定 的函數(shù)來處理這個(gè)操作。 Qt 提供了一種稱為 signals/slots 的安全類型來替代 callback,這使得各個(gè)元件之間的協(xié)同工作變得十分簡單; 豐富的 API: Qt 包括多達(dá) 250 個(gè)以上的 C++ 類,還提供基于模板的 collections, serialization, file, I/O device, directory management, date/time 類。 圖形用戶界面或圖形用戶接口 (Graphical User Interface, GUI)是指采用圖形方式顯示的計(jì)算機(jī)操作環(huán)境用戶接口。 GUI 的廣泛應(yīng)用是當(dāng)今計(jì)算機(jī)發(fā)展的重大成就之一,它極大地方便了非專業(yè)用戶的使用人們從此不再需要死記硬背大量的命令,取而代之的是可用通過窗口、菜單、按鍵等方式來方便地進(jìn)行操作。 圖形界面穩(wěn)定實(shí)用是前提,在穩(wěn)定的前提下要力求做好美觀,簡潔,客戶端通過創(chuàng)建圖形界面,并通過代理調(diào)用服務(wù)器中的接口,再運(yùn)用 QT 的機(jī)制,通過點(diǎn)擊按鈕等方式獲取相應(yīng)響應(yīng),從而實(shí)現(xiàn)相應(yīng)操作。 IP對應(yīng)的 LineEdit 響應(yīng) SaveIp 函數(shù),用以保存 Ip 地址。 (uitext1text())。 } Port 對應(yīng)的 LineEdit 響應(yīng) SavePort 函數(shù),用以保存 Port 號。 (uitext2text())。 } ‘ 確定 ’ 按鈕響應(yīng)響應(yīng) Loginuser 函數(shù),目的是登陸服務(wù)器。 try { ic = Ice::initialize()。 string configfile = CONFIG_FILE。 if (serip==default) str=str+serip+ p +serport。 coutstrendl。 funcppPrx cbrx = funcppPrx::checked Cast(base)。 } catch (const Ice::Exception amp。 } catch (const char * mug) { car mug endl。 } 同時(shí),若連接服務(wù)器成功,還應(yīng)彈出新窗口。 if (()==0) { QMessageBox::about(NULL, IP is NULL, IP is set default)。} if (()==0) {QMessageBox::about(NULL, Port is NULL, Port is set 20200)。} =serip。 icefun=getfuncpp()。 ()。 ()。 if (==1) { =。 ()。 (s)。 Logoutser()。 連接窗體如下圖: 圖 45 連接窗體 登陸窗體 登陸窗體:實(shí)現(xiàn)用戶登陸。 兩個(gè) Widget; UserName 對應(yīng)的 LineEdit 響應(yīng) SaveName 函數(shù),保存用戶姓名。 西安工業(yè)大學(xué)畢業(yè)設(shè)計(jì)(論文) 12 (uitext3text())。 } Password 對應(yīng)的 LineEdit 響應(yīng) SavePassword 函數(shù),保存密碼。 (uitext4text())。 } ‘ 確定 ’ 按鈕響應(yīng) Logusr 函數(shù),用戶登陸成功。 if (()==0 || ()==0) { QMessageBox::about(NULL, Please try again, Username and Password can not NULL)。 return 0。 int ret=loginicefunLogins(usrname,usrpwd)。return 1。 flag=0。 } return 1。 其實(shí)現(xiàn)如下: void Login::Register() { Regist reg。 ()。 ‘設(shè)置’按鈕是彈出鏈接窗體。 ‘找回密碼’按鈕用來彈出找回密碼窗體。 在注冊窗體中含有 4個(gè) LineEdit 和個(gè) 2個(gè) Button。其實(shí)現(xiàn)如下: void Regist::saveregistername() { QString qname。 registername= ()。 (uitext8text())。 } 用戶昵稱的 LineEdit 實(shí)現(xiàn) savesecondname(),其實(shí)現(xiàn)如下所示: void Regist::savesecondname() { QString qname。 secondname= ()。 return 。 西安工業(yè)大學(xué)畢業(yè)設(shè)計(jì)(論文) 15 return 。 return 。 注冊窗體如下: 圖 48 注冊窗體 用戶窗體 用戶窗體:用于展示好友列表,并選定好友和好友聊天。 該窗體提供一個(gè)初始化函數(shù) init,用于獲取好友列表,其實(shí)現(xiàn)如下: void panel::init() { 西安工業(yè)大學(xué)畢業(yè)設(shè)計(jì)(論文) 16 udpSocket = new QUdpSocket(this)。 //綁定端口 UDP QString msgType = MSG_CLIENT_NEW_CONN。 QDataStream out(amp。 (QDataStream::Qt_4_6)。 ()seek(0)。 //UDP 寫入 connect(thisudpSocket, SIGNAL(readyRead()), this, SLOT(recvMsg()))。其實(shí)現(xiàn)如下: void chatmwindow::chatwfriend(QTreeWidgetItem* qitem,int ) { frienddialog *fridialog=new frienddialog。 fridialogusername=username。 string tmp。 QString s=QString(())。 fridialogautorun()。 } 修改密碼和修改昵稱的 LineEdit 實(shí)現(xiàn)如下: void panel::on_editButton_clicked() { QString msgType = MSG_USER_MODI。 QString pwd2 = uieditpwdlineEdittext().trimmed()。 QDataStream out(amp。 (QDataStream::Qt_4_6)。 ()seek(0)。 if (!udpSocketwriteDatagram((), (), QHostAddress(ip), (quint16)()+1)) { QMessageBox::warning(NULL, tr(udpSocket), tr(writeDatagram))。 uieditpwdlineEditclear()。 thisresize(201, 492)。 } 設(shè)置推出的實(shí)現(xiàn)如下: void panel::mousePressEvent(QMouseEvent *event) { thiswindowPos = thispos()。 thisdPos = mousePos windowPos。 } 西安工業(yè)大學(xué)畢業(yè)設(shè)計(jì)(論文) 18 用戶窗體如下圖所示 。 對話窗體含有一個(gè) Button,一個(gè) LineEdit,兩個(gè) TextEdit。 其實(shí)現(xiàn)如下: void frienddialog::savemessage() { savemes=uitexttext().toStdString()
點(diǎn)擊復(fù)制文檔內(nèi)容
黨政相關(guān)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1