【正文】
qDebug()ip isip。 qDebug()userid isuserid。//窗體透明設(shè)置 //創(chuàng)建 udpsocket 套接字 綁定到本地端口;和 ip 地址 recUdpSocket=new QUdpSocket(this)。 thissetStyleSheet(border:none)。//網(wǎng)友 //窗體基本屬性設(shè)置 thissetWindowTitle(主界面 )。 toolboxaddItem(friendlist3,網(wǎng)友 )。 vlayout2addWidget(groupbox3)。 groupbox3setStyleSheet(border:none)。 hlayout3addWidget(defaultButton)。 defaultButton=new QToolButton。 hlayout2addWidget(toolbox)。 groupbox1setStyleSheet(border:none)。 hlayout1=new QHBoxLayout。 imagelabelresize(QSize(5,5))。 useridlabelsetText(賬號: )。 friendlist3=new ListWidget。msg) : QWidget(parent), 攀枝花學(xué)院本科畢業(yè)設(shè)計(論文) 系統(tǒng)關(guān)鍵技術(shù)實現(xiàn) 23 ui(new Ui::Form) { uisetupUi(this)。 =uisexlineEdittext()。 攀枝花學(xué)院本科畢業(yè)設(shè)計(論文) 系統(tǒng)關(guān)鍵技術(shù)實現(xiàn) 22 =uipwdlineEdittext()。 =uinickNamelineEdittext()。uipwdlineEdittext().isEmpty()) { qDebug()userid or pwd can39。 sendData(msg)。 =LOGIN。msg) void 獲得好友信息的信號 deletefriendSignal(Message amp。 Widget 類主要的槽及信號: 槽及主要成員函數(shù) 返回值 功能 loginrequest() void 登錄請求 receiveData() void 接收消息 on_registerButton_clicked() void 注冊賬號 sendData(Message amp。 chatForm 類實現(xiàn)聊天界面的創(chuàng)建。) void 登錄成功信 號 getFriendTable(Messageamp。 客戶端實現(xiàn) 客戶端主要有 addfriendForm 類、 chatForm 類、 friendInfoForm 類、 ListWidget類、 Form 類、 registerForm 類和 Widget 類。 (:userid,sourceid)。 ()。msg) void 響應(yīng)客戶端的請求,將反饋的信息發(fā)送給客戶端 sqlProcess(Message amp。)))。 connect(mythread,SIGNAL(clientDisconnectSignal(QString)),mythread,SLOT(deleteLater()))。 }else { uiserverStatuslabelsetText(tr( 服務(wù)器運行在端口: %1.\n).arg(serverserverPort()))。 攀枝花學(xué)院本科畢業(yè)設(shè)計(論文) 系統(tǒng)關(guān)鍵技術(shù)實現(xiàn) 16 } 當(dāng)服務(wù)器啟動時創(chuàng)建服務(wù)器啟動界面,點擊啟動服務(wù)器進入監(jiān)聽狀態(tài),界面顯示服務(wù)器的 ip 地址和端口號。 } else { qDebug()error open database because().text()。 bool ok=()。 (localhost)。 myServer 類主要實現(xiàn)通信線程的創(chuàng)建、刪除。 聊天:用戶在好友列表的好友信息一欄上點擊右鍵,如果好友在線選擇聊天客戶端就會發(fā)送請求獲取好友的 ip 地址和端口號。在該界面中填寫好友的賬號即可實現(xiàn)好友的添加。 用戶信息修改:客戶 端點擊修改個人信息按鈕,出現(xiàn)填寫個人信息資料的窗體,將要修改的個人信息填寫到窗體的列表中,再將修改的個人信息發(fā)送到數(shù)據(jù)庫中。 好友聊天:服務(wù)器收到聊天請求時在數(shù)據(jù)中查詢好友的連接信息并將好友的 ip地址及端口號返回給用戶。 添加好友:服務(wù)器收到添加好友請求后將好友存入數(shù)據(jù)庫中的好友列表。聊天時客戶端向服務(wù)器請求好友的連接信息,客戶端得到好友的連接信息后再利用此鏈接信息將聊天信息發(fā)送給好友 . 登錄驗證:服務(wù)器接收客戶端發(fā)來的賬戶和密碼,創(chuàng)建一個通信線程來接收客戶端的請求。 可擴展性 可以很容易擴展系統(tǒng)功能和系統(tǒng)功能的更新。服務(wù)器的消息記錄能即時的更新。 用戶信息修改模塊:實現(xiàn)修改個人信息。 攀枝花學(xué)院本科畢業(yè)設(shè)計(論文) 系統(tǒng)設(shè)計 10 3. 系統(tǒng)設(shè)計 系統(tǒng)分析 功能需求分析 即時通信系統(tǒng)是基于 c/s 模型的網(wǎng)絡(luò)通信軟件,分為客戶端和服務(wù)器端兩個部分。而 DOS 這類文字攀枝花學(xué)院本科畢業(yè)設(shè)計(論文) 系統(tǒng)開發(fā)關(guān)鍵技術(shù)及開發(fā)環(huán)境 9 接口作業(yè)系統(tǒng)在一 個時間只能處理一項工作,被視為單人單工作業(yè)系統(tǒng)。 軟件多線程。在 JAVA 這樣的跨平臺語言出現(xiàn)之后, B/S 架構(gòu) 更是猛烈沖擊 C/S,并對其形成威脅和挑戰(zhàn)。而且代價高, 效率低??赡苓m應(yīng)于 Win98, 但不能用于 win20xx 或 Windows XP。首先涉及到安裝的工作量,其次任何一臺電腦出問題,如病毒、硬件損壞, 都需要進行安裝或維護。在 C/S 體系下,數(shù)據(jù)庫不能真正成為公共、專業(yè)化的倉庫,它受到獨立的專門管理。 ( 2)數(shù)據(jù)的儲存管理功能較為透明。最簡單的 C/S 體系結(jié)構(gòu)的數(shù)據(jù)庫應(yīng)用由兩部分組成,即客戶應(yīng)用程序和 數(shù)據(jù)庫服務(wù)器 程序。 Client 和 Server 常常分別處在相距很遠的兩臺計算機上, Client 程序的任務(wù)是將用戶的要求提交給 Server 程序,再將 Server 程序返回的結(jié)果以特 定的形式顯示給用戶; Server 程序的任務(wù)是接收客戶程序提出的服務(wù)請求,進行相應(yīng)的處理,再將結(jié)果返回給客戶程序。這也就是目前應(yīng)用系統(tǒng)的發(fā)展方向。但是正因為 UDP協(xié)議的控制選項較少,在數(shù)據(jù)傳輸過程中延遲小、數(shù)據(jù)傳輸效率高,適合對可靠性要求不高的應(yīng)用程序,或者可以保障可靠性的應(yīng)用程序,如 DNS、 TFTP、 SNMP 等。 UDP 協(xié)議基本上是 IP 協(xié)議 與上層協(xié)議的接口。 UDP 協(xié)議從問世至今已經(jīng)被使用了很多年,雖然其最初的光彩已經(jīng)被一些類似協(xié)議所掩蓋,但是即使是在今天, UDP仍然不失為一項非常實用和可行的網(wǎng)絡(luò)傳輸層協(xié)議。面向連接的服務(wù)(例如 Tel、 FTP、 rlogin、 X Windows 和 SMTP)需要高度的可靠性,所以它們使用了 TCP。 TCP 將包排序并進行錯誤檢查,同時實現(xiàn)虛電路間的連接。對于一些 TCP 和 UDP 的服務(wù)來說,使用了該選攀枝花學(xué)院本科畢業(yè)設(shè)計(論文) 系統(tǒng)開發(fā)關(guān)鍵技術(shù)及開發(fā)環(huán)境 6 項的 IP 包好像 是從路徑上的最后一個系 統(tǒng)傳遞過來的,而不是來自于它的真實地點。 IP 數(shù)據(jù)包中含有發(fā)送它的主機的地址(源地址)和接收它的主機的 地址(目的地址)。因此,如果要訪問其他 協(xié)議 發(fā)送數(shù)據(jù)必須使用原始套接字。該服務(wù)并不能保證數(shù)據(jù)傳輸?shù)目煽啃?,?shù)據(jù)有可能在傳輸過程中丟失或出現(xiàn)數(shù)據(jù)重復(fù),且無法保證順序地接收到數(shù)據(jù)。 Socket 套接字包括: 流套接字( SOCK_STREAM): 流套接字用于提供面向連接、可靠的數(shù)據(jù)傳輸服務(wù)。對于一般的個人使用者和中小型企業(yè)來說,MySQL 提供的功能已經(jīng)綽 綽有余,而且由于 MySQL 是開放源碼軟件,因此可以大大降 低 總 體 擁 有 成 本 。 MySQL 是使用使用 C 和 C++編寫,并使用了多種編譯器進行測試,保證源代 碼的可移植性特點;它還支持 AIX、 FreeBSD、 HPUX、 Linux、 Mac OS、 Novell Netware、OpenBSD、 OS/2 Wrap、 Solaris、 Windows 等多種操作系統(tǒng) ;它為多種編程語言提供了 API。 mysql 數(shù)據(jù)庫介紹 MySQL 的概述 MySQL 是一個小型關(guān)系型數(shù)據(jù)庫管理系統(tǒng),開發(fā)者為瑞典 MySQL AB 公司。 Qt Creator 簡介 Qt Creator 是 Qt 被 Nokia 收購后推出的一款新的輕量級集成開發(fā)環(huán)境( IDE),能夠跨平臺運行,支持的系統(tǒng)包括 Linux, Mac OS X 以及 Windows. 允許開發(fā)者為多桌面環(huán)境及移動設(shè)備平臺創(chuàng)建應(yīng)用程序。信號和槽是 寬松地聯(lián)系在一起的:一個發(fā)射信號的類不用知道也不用注意哪個槽要接收這個信號。 Qt 的窗口部件又很多預(yù)定義的槽,但是通常的習(xí)慣是你可以加入自己的槽,這樣 你就可以處理你所感興趣的信號。信號和槽是 QT 自行定義的一種通信機制,它獨立于標(biāo)準的 C/C++語言。 總的來說,相對于老舊的 MFC 和目前編程行業(yè)通行的 VC++工具, Qt 以其入門簡單,跨平臺以及嵌入式等方面有著無可代替的優(yōu)越性,當(dāng)然 MFC 的完整性以及內(nèi)容的豐富性是 Qt 不及的。 整個軟件有客戶端和服務(wù)器端組成,將所有功能封裝于各式類文件中,后期維護簡單。經(jīng)過 3 次握手建立連接發(fā)送數(shù)據(jù)。 目前,大多數(shù)即時通信軟件在通訊時傳遞的信息或文件僅僅采用了弱加密甚至不 加密的方式,黑客能很容易的利用此缺陷來監(jiān)聽、篡改、竊取用戶的重要數(shù)據(jù),這種泄密可能給用戶造成不可估量的損失;尤其是對一些商業(yè)機構(gòu)和金融機構(gòu),一旦泄密,將會構(gòu)成巨大的商業(yè)安全威脅。 只要連接到 Inter 互聯(lián)網(wǎng),用戶賬號和密碼被盜對黑客來說是件很容易的事。 即時通 訊工具作為未來跨越互聯(lián)網(wǎng)與移動互聯(lián)網(wǎng)的業(yè)務(wù),其發(fā)展的潛力是十分巨大的,同時,其商業(yè)模式的發(fā)展將是未來要關(guān)注的焦點。據(jù)相關(guān)統(tǒng)計,目前中國智能手機用戶在 5 億左右,這意味著,智能手機用戶幾乎都活躍在手機 上。因此,即時通信軟件的設(shè)計與開發(fā)具有重要意義。s lives. Instant messaging as the future across the Inter and mobile Inter business, its development potential is enormous, while the development of its business model will be the focus of the future to pay attention. Free and fee development strategy will be a bination of IM39??蛻舳酥饕獙崿F(xiàn)用戶登錄、注冊、聊天等功能。即時通訊工具作為未來跨越互聯(lián)網(wǎng)與移動互聯(lián)網(wǎng)的業(yè)務(wù),其發(fā)展的潛力是十分巨大的,同時,其商業(yè)模式的發(fā)展將是未來要關(guān)注的焦點。免費與收費相結(jié)合的發(fā)展策略將是 IM 的主要發(fā)展模式。該軟件采用多線程技術(shù)、 tcp 通信技術(shù)、 udp 通信技術(shù),并在傳輸數(shù)據(jù)時對消息實現(xiàn)序列化和數(shù)據(jù)的還原。s main development model. In this paper, the realization of a run on LANbased instant messaging system windows platform. The chat software includes server and client of two modules, the client sends a service request to the server to the client to provide appropriate services to the server. Client main implement user login, registration, chat and other functions. The software uses multithreading technology, tcp munication technology, udp munications technology, and in the transmission of da