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

正文內(nèi)容

基于winsock的網(wǎng)絡(luò)聊天軟件設(shè)計(jì)-wenkub.com

2025-08-08 12:17 本頁(yè)面
   

【正文】 既然設(shè)計(jì)已經(jīng)完成,論文也寫(xiě)到結(jié)論的地方,我希望自己能以一個(gè)良好的心態(tài)順利畢業(yè),走向社會(huì)。從這次設(shè)計(jì)中,我充分認(rèn)識(shí)到了VC++的高效的開(kāi)發(fā)能力,以及WINDOWS平臺(tái)一如既往的易用性。本程序即可做到使以前從未使用過(guò)的用戶(hù)完全正確使用,所以具有比較好的易用性。性能與效率測(cè)試關(guān)于性能的問(wèn)題,只有在程序啟動(dòng)的時(shí)候,掃描網(wǎng)絡(luò)需要占用較多的系統(tǒng)資源和時(shí)間。容錯(cuò)性測(cè)試容錯(cuò)性測(cè)試是檢查軟件在異常條件下的行為。功能性測(cè)試先在其中一臺(tái)機(jī)器A上啟動(dòng)本軟件,掃描可以發(fā)現(xiàn)另一臺(tái)開(kāi)機(jī)的B機(jī)器,但是因?yàn)锽機(jī)器上的本軟件尚未啟動(dòng),所以顯示為不可聊天。正確性測(cè)試正確性測(cè)試又稱(chēng)功能測(cè)試,它檢查軟件的功能是否符合規(guī)格說(shuō)明。在實(shí)踐中,測(cè)試要考慮時(shí)間、費(fèi)用等限制,不允許無(wú)休止地測(cè)試。這樣的測(cè)試是虛假的。 第四章 測(cè)試測(cè)試的目的是為了發(fā)現(xiàn)功能是否達(dá)到,或者是否有更多的缺陷!這里的缺陷是泛稱(chēng)的,它可以指功能的錯(cuò)誤,也可以指性能低下,易用性差等等。}對(duì)于客戶(hù)端的群聊源代碼,我們可以分為OnSend()和OnReceive,其中OnReceive跟前面服務(wù)器端的功能是大同小異,這里我就不做多余的闡述。 //接收消息 CString strTemp = buff。 //判斷消息類(lèi)型并分別予以響應(yīng)if(type == SEND_MESSAGE) { //調(diào)用顯示消息函數(shù) chatDlgGetMessage()。 Receive(buff,sizeof(buff))。 pEditSetFocus()。head,sizeof(Header))。 CString t = (%H:%M:%S)。 } //初始化消息結(jié)構(gòu)體為SEND_MESSAGE消息 Header head。 if(m_strMessage == ) //為空時(shí)要求用戶(hù)重新輸入消息 { AfxMessageBox(不能發(fā)送空消息!)。通過(guò)遍歷用戶(hù)套接字鏈表,將用戶(hù)發(fā)送來(lái)的消息發(fā)送給在線列表的每一個(gè)用戶(hù)。OnReceive函數(shù)是當(dāng)客戶(hù)端有信息發(fā)送來(lái)時(shí),自動(dòng)會(huì)響應(yīng)的函數(shù)。 } }}從上面的關(guān)于服務(wù)器端群聊功能的源代碼,我們可以分為兩個(gè)部分來(lái)分析。 POSITION pos = clistGetHeadPosition()。if(type == SEND_MESSAGE) //判斷消息類(lèi)型并分別予以響應(yīng) { char buff[1000]。 int length = headerlen。 memset(buff1, 0, sizeof(buff1))。 服務(wù)器端:開(kāi)始創(chuàng)建套接字創(chuàng)建偵聽(tīng)初始化窗口消息類(lèi)型檢索數(shù)據(jù)庫(kù)并獲得用戶(hù)昵稱(chēng)消息更新用戶(hù)鏈表,顯示用戶(hù)進(jìn)入消息更新用戶(hù)鏈表,顯示用戶(hù)離開(kāi)消息發(fā)送更新鏈表消息檢索數(shù)據(jù)庫(kù)并進(jìn)行密碼驗(yàn)證正確?發(fā)送PASS_SUCCESS發(fā)送PASS_FAILED將原消息遍歷用戶(hù)鏈表發(fā)出發(fā)送SERVER_STOP然后,關(guān)閉套接字結(jié)束LOGIN_IOCHAT_CLOSEPASS_SUCCESSSEND_MESSAGEPRIVATE_MESSAGEE管理員單擊“退出” 服務(wù)器端內(nèi)部運(yùn)行流程圖對(duì)于服務(wù)器端的源代碼,由于此處篇幅有限,不能把全部代碼都貼出來(lái)分析,所以我僅僅對(duì)服務(wù)器端的群聊代碼進(jìn)行講解分析。在服務(wù)器端:首先定義了一個(gè)APP管理類(lèi)ChatServerApp,一個(gè)用于對(duì)話(huà)框的服務(wù)器主窗口類(lèi)ChatServerDlg,一個(gè)用于接受客戶(hù)端套接字連接的套接字類(lèi)ServerSocket和一個(gè)用于在聊天過(guò)程中需要使用的收發(fā)信息的套接字類(lèi)ClientSocket。typedef struct tagHeader{ char type。以下個(gè)圖就是軟件的最終界面。數(shù)據(jù)庫(kù)中創(chuàng)建了1張數(shù)據(jù)表來(lái)存儲(chǔ)用戶(hù)信息,名稱(chēng)表table1,其表包括如下六列:strNum(帳號(hào))、strName(昵稱(chēng))、strPass(密碼)、strRealName(真實(shí)姓名)、strSex(性別)、strCountry(用戶(hù)所在國(guó)家)。聊天服務(wù)器端監(jiān)聽(tīng)本地特定端口功能響應(yīng)客戶(hù)端各種消息功能保存用戶(hù)的基本資料功能支持?jǐn)?shù)據(jù)庫(kù)的插入查詢(xún)功能顯示在線用戶(hù)鏈表功能顯示用戶(hù)進(jìn)出和申請(qǐng)帳號(hào) 服務(wù)器端功能模塊,客戶(hù)端的功能子模塊包括:監(jiān)聽(tīng)本地特定端口、響應(yīng)客戶(hù)端各種消息、公共聊天信息交互、與選定用戶(hù)私聊、顯示在線用戶(hù)狀態(tài)、拒絕私聊請(qǐng)求等。數(shù)據(jù)庫(kù)層負(fù)責(zé)實(shí)際的數(shù)據(jù)存儲(chǔ)和檢索。以目前的技術(shù)看,局域網(wǎng)建立 B/S 結(jié)構(gòu)的網(wǎng)絡(luò)應(yīng)用,并通過(guò) Internet/Intranet 模式下數(shù)據(jù)庫(kù)應(yīng)用。B/S(Browser/Server)結(jié)構(gòu)即瀏覽器和服務(wù)器結(jié)構(gòu)。 第二節(jié) 總體設(shè)計(jì)一、體系結(jié)構(gòu)模型當(dāng)今應(yīng)用系統(tǒng)結(jié)構(gòu)主要采用以下幾種體系結(jié)構(gòu)模型:C/S(Client/Server)結(jié)構(gòu),即客戶(hù)機(jī)和服務(wù)器結(jié)構(gòu)。如果接受,客戶(hù)端A將與客戶(hù)端B進(jìn)行正常的單獨(dú)聊天。客戶(hù)端1客戶(hù)端2客戶(hù)端3客戶(hù)端4服務(wù)器發(fā)送消息發(fā)送消息發(fā)送消息發(fā)送消息接收消息接收消息接收消息接收消息 公共聊天模式,客戶(hù)端1和客戶(hù)端3進(jìn)行的就是單獨(dú)聊天模式,就如同我們?nèi)粘I钪惺褂门c好友進(jìn)行單獨(dú)聊天一樣。以下將是針對(duì)于公共聊天模式、單獨(dú)聊天模式和系統(tǒng)整體功能流程圖。并且要求易于維護(hù)及擴(kuò)展。程序要有良好的容錯(cuò)性,當(dāng)用戶(hù)進(jìn)行非法操作時(shí)或者系統(tǒng)本身出現(xiàn)問(wèn)題時(shí)要能以最好的方式退出程序,避免發(fā)生程序假死現(xiàn)象。二、性能要求本軟件操作簡(jiǎn)單,界面明了清爽,程序較小,啟動(dòng)速度快,無(wú)啟動(dòng)界面。 客戶(hù)端聊天程序(1)當(dāng)用戶(hù)沒(méi)有帳號(hào)時(shí),應(yīng)該有申請(qǐng)帳號(hào)的權(quán)利和便利,并把自己的用戶(hù)信息上傳到服務(wù)器端。 第二章 軟件需求分析及總體設(shè)計(jì)第一節(jié) 需求分析概述一、功能要求服務(wù)器端聊天程序(1)基本功能①監(jiān)聽(tīng)本機(jī)IP地址中的一個(gè)指定的端口。CSocket建立在CAsyncSocket的基礎(chǔ)上,是CAsyncSocket的派生類(lèi),它提供了對(duì)通過(guò)CArchive對(duì)象使用套接字工作的更高級(jí)抽象。Visual C++ 應(yīng)用程序開(kāi)發(fā)程序環(huán)境特別適合于使用 MFC (也有其它開(kāi)發(fā)環(huán)境使用MFC,譯者注),所以一起學(xué)習(xí) MFC 和 Visual C++ 能夠增強(qiáng)你的開(kāi)發(fā)程序的能力。這就是事件驅(qū)動(dòng)代碼,它構(gòu)成了所有應(yīng)用程序。因此,MFC很值得推薦的開(kāi)發(fā)Windows應(yīng)用程序的方法,在本教程自始至終使用的都是MFC。它就是Microsoft基本類(lèi)庫(kù)(MFC),該庫(kù)的主要優(yōu)點(diǎn)是效率高。MFC(Microsoft Foundation Class Library)中的各種類(lèi)結(jié)合起來(lái)構(gòu)成了一個(gè)應(yīng)用程序框架,它的目的就是讓程序員在此基礎(chǔ)上來(lái)建立Windows下的應(yīng)用程序,這是一種相對(duì)SDK來(lái)說(shuō)更為簡(jiǎn)單的方法。Socket在實(shí)現(xiàn)中以句柄的形式被創(chuàng)建,包含了進(jìn)行網(wǎng)絡(luò)通信必須的五種信息:連接使用的協(xié)議,本地主機(jī)的IP地址,本地進(jìn)程的協(xié)議端口,遠(yuǎn)地主機(jī)的IP地址,遠(yuǎn)地進(jìn)程的協(xié)議端口。WinSock以DLL的形式提供,在調(diào)用任何WinSock API之前,必須調(diào)用函數(shù)WSAStartup進(jìn)行初始化,最后,調(diào)用函數(shù)WSACleanUp作清理工作。最早的Socket接口是Berkeley接口,在Unxi操作系統(tǒng)中實(shí)現(xiàn)。第一個(gè)參數(shù)是套接字描述符,buf是一個(gè)指向用于發(fā)送信息的數(shù)據(jù)緩沖區(qū),len只傳送數(shù)據(jù)緩沖區(qū)的大小,flags是傳輸控制標(biāo)志。 一個(gè)參數(shù)是SOCKET函數(shù)返回的套接字描述符,第二個(gè)參數(shù)是由CLIENT參數(shù)返回客戶(hù)端的協(xié)議地址,第三個(gè)該套接字地址結(jié)構(gòu)的大小。第一個(gè)參數(shù)是要設(shè)置的描述符,第二個(gè)參數(shù)規(guī)定了請(qǐng)求隊(duì)列中的最大連接數(shù)。參數(shù):s:是由socket()調(diào)用返回的并且未作連接的套接字描述符(套接字號(hào))。//保留,全0}創(chuàng)建套接字——socket()功能:使用前創(chuàng)建一個(gè)新的套接字格式:socket(int family,int type,int procotol)。套接字地址結(jié)構(gòu)說(shuō)明:struct sockaddr_in{ short sin_family??蛻?hù)端:(1)加載套接字庫(kù),創(chuàng)建套接字socket()。(4)請(qǐng)求到來(lái)后,接受連接請(qǐng)求,返回一個(gè)新的對(duì)應(yīng)于此次連接的套接字accept()。套接字的類(lèi)型:SOCK_STREAM 流套接字,提供面向連接,可靠的數(shù)據(jù)傳輸服務(wù);SOCK_DGRAM 數(shù)據(jù)報(bào)套接字,提供面向無(wú)連接的服務(wù);SOCK_RAW 原始套接字,運(yùn)行對(duì)低于傳輸層的協(xié)議或者物理網(wǎng)絡(luò)直接訪問(wèn)。Socket是TCP/IP協(xié)議的一個(gè)十分流行的編程界面,一個(gè)Socket由一個(gè)IP地址和一個(gè)端口號(hào)唯一確定。網(wǎng)絡(luò)編程簡(jiǎn)單的理解就是兩臺(tái)計(jì)算機(jī)相互通訊數(shù)據(jù)。套接字地址完整地說(shuō)是應(yīng)用端口號(hào)、協(xié)議和本地IP地址的集合,它形成一個(gè)應(yīng)用鏈路的終點(diǎn),有效的激活一個(gè)套接字到套接字的連接。Socket譯為中文為套接字,指兩個(gè)程序間進(jìn)行雙向數(shù)據(jù)傳輸?shù)木W(wǎng)絡(luò)通信端點(diǎn),是網(wǎng)上兩個(gè)主機(jī)之間必要的數(shù)據(jù)無(wú)縫傳輸。是VC++網(wǎng)絡(luò)程序位于最上層——應(yīng)用層,并且通過(guò)套接字訪問(wèn)底層網(wǎng)絡(luò),也可以說(shuō),套接字為應(yīng)用層封裝了底層網(wǎng)絡(luò)傳輸數(shù)據(jù)的細(xì)節(jié)。發(fā)送者保存發(fā)送的數(shù)據(jù)的記錄,在發(fā)送下一個(gè)數(shù)據(jù)之前,等待這個(gè)數(shù)據(jù)的確認(rèn)消息。與IP協(xié)議提供不可靠傳輸服務(wù)不同的是,TCP協(xié)議為其上的應(yīng)用層提供了一種可靠傳輸服務(wù)。通信完結(jié)束后,就要釋放連接了有客戶(hù)方請(qǐng)求釋放連接,被動(dòng)方接到信號(hào)后,給客戶(hù)端發(fā)出一個(gè)確認(rèn)信號(hào),告知已經(jīng)收到它的信息。接收方收到這個(gè)段后,向發(fā)送者回發(fā)一個(gè)段。當(dāng)該數(shù)據(jù)報(bào)到達(dá)目的地后,接收方的TCP實(shí)體向回發(fā)送一個(gè)數(shù)據(jù)報(bào),其中包含有一個(gè)確認(rèn)序號(hào),它等于希望收到的下一個(gè)數(shù)據(jù)報(bào)的順序號(hào)。通過(guò)在發(fā)送方和接收方分別創(chuàng)建一個(gè)稱(chēng)為套接字的通信端口就可以獲得TCP服務(wù)。當(dāng)衛(wèi)星和無(wú)線網(wǎng)絡(luò)出現(xiàn)以后,現(xiàn)有的協(xié)議在和這些網(wǎng)絡(luò)互聯(lián)時(shí)出現(xiàn)了問(wèn)題,所以需要一種新的參考體系結(jié)構(gòu),能無(wú)縫地連接多個(gè)網(wǎng)絡(luò)。本文中所討論的基于Socket的局域網(wǎng)聊天軟件應(yīng)用范圍廣闊,不但可以處理傳統(tǒng)的通信需求,而且也能擴(kuò)展以適應(yīng)用戶(hù)更豐富的網(wǎng)絡(luò)應(yīng)用,如語(yǔ)言聊天,視頻聊天,文件傳輸,遠(yuǎn)程協(xié)助等,擁有廣泛的應(yīng)用前景?;赟ocket的局域網(wǎng)聊天軟件可以為局域網(wǎng)內(nèi)用戶(hù)提供一種快捷,良好,方便的通信方式,局域網(wǎng)內(nèi)的全部機(jī)子可以通過(guò)一個(gè)服務(wù)器建立的聊天室進(jìn)行聊天。作為Windows XP的一部分,Messenger 整合了操作系統(tǒng)的許多功能,如多種形式的聊天選擇、多人的單窗口討論式交流以及充分的文件與桌面共享功能等。正是四位以色列籍的年輕人,在1996年7月成立的Mirabilis公司,并于同年11月推
點(diǎn)擊復(fù)制文檔內(nèi)容
黨政相關(guān)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1