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

正文內(nèi)容

基于winsock的網(wǎng)絡(luò)聊天軟件設(shè)計-資料下載頁

2025-08-11 12:17本頁面
  

【正文】 息發(fā)送來時,自動會響應(yīng)的函數(shù)。要獲取發(fā)來的信息內(nèi)容,需要調(diào)用Receive函數(shù)。根據(jù)接收到的內(nèi)容,判斷這次要進行什么處理,是剛登錄聊天室還是其它聊友信息發(fā)送,如果是剛登錄聊天室,那么需要顯示誰剛登錄聊天室的信息;否則向所有在線的其它聊友發(fā)送說話內(nèi)容。對后面的消息群發(fā)代碼部分,要運行此部分代碼是首先需要判斷消息類型的,只有類型是SEND_MESSAGE的消息才會執(zhí)行后面的代碼。通過遍歷用戶套接字鏈表,將用戶發(fā)送來的消息發(fā)送給在線列表的每一個用戶。在部分代碼中,使用到了Receive和Send函數(shù),在調(diào)用了這個兩個函數(shù)的過程,也使用了其中的一些參數(shù)。 客戶端:開始創(chuàng)建套接字連接服務(wù)器操作填寫用戶信息,并提交在編輯框內(nèi)顯示消息內(nèi)容等待消息提示申請成功發(fā)送LOGIN_IO和PASS_SUCCESS等待消息進入聊天主窗口,更新窗口信息接收消息單擊“退出”向服務(wù)器發(fā)送CHAT_CLOSE消息結(jié)束同意?進入私聊窗口進行私聊的消息循環(huán)(類似主窗口)雙擊某個用戶請求與其私聊對方反應(yīng)進入私聊窗口進行私聊的消息循環(huán)(類似主窗口)發(fā)送ASK_NUM申請帳號登陸ASK_NUMASKNUM_FAILEDPASS_FAILEDPASS_SUCCESSSEND_MESSAGESPRIVATE_ASK拒絕同意拒絕同意對于客戶端的源代碼,由于此處篇幅有限,不能對全部代碼進行分析,所以我僅僅對服務(wù)器端的群聊代碼進行講解分析??蛻舳?void CMyChatDlg::OnSend() { //響應(yīng)“發(fā)送”按鈕,發(fā)送用戶編輯的聊天信息 UpdateData()。 if(m_strMessage == ) //為空時要求用戶重新輸入消息 { AfxMessageBox(不能發(fā)送空消息!)。 CEdit *pEdit = (CEdit*)GetDlgItem(IDC_EDIT_MESSAGE)。 pEditSetFocus()。 return。 } //初始化消息結(jié)構(gòu)體為SEND_MESSAGE消息 Header head。 = SEND_MESSAGE。 = ()。 CTime time = CTime::GetCurrentTime()。 CString t = (%H:%M:%S)。 CString nikeName = 。 //編輯出完整的消息字符串str CString str = nikeName + + t + \r\n + +m_strMessage。 m_pSocketSend((char *)amp。head,sizeof(Header))。 /發(fā)送消息到服務(wù)器 if(m_pSocketSend((LPCTSTR)str, ())){ m_strMessage = 。 //判斷是否發(fā)送成功 UpdateData(FALSE)。 CEdit *pEdit = (CEdit*)GetDlgItem(IDC_EDIT_MESSAGE)。 pEditSetFocus()。 } else { //錯誤提示 AfxMessageBox(網(wǎng)絡(luò)傳輸錯誤!)。 }}void CClientSocket::OnReceive(int nErrorCode) { //重載函數(shù)(在本地套接字接收到消息時自動調(diào)用它進行消息處理) //監(jiān)聽接收消息 char buff[sizeof(Header)]。 memset(buff,0,sizeof(buff))。 Receive(buff,sizeof(buff))。 Header *header = (Header*)buff。 int length = headerlen。 char type = headertype。 //判斷消息類型并分別予以響應(yīng)if(type == SEND_MESSAGE) { //調(diào)用顯示消息函數(shù) chatDlgGetMessage()。 }}BOOL CMyChatDlg::GetMessage(){ char buff[1000]。 memset(buff,0,sizeof(buff))。 m_pSocketReceive(buff, sizeof(buff),0)。 //接收消息 CString strTemp = buff。 strTemp += _T(\r\n)。 (strTemp)。 //將消息內(nèi)容顯示在編輯框內(nèi) return TRUE。}對于客戶端的群聊源代碼,我們可以分為OnSend()和OnReceive,其中OnReceive跟前面服務(wù)器端的功能是大同小異,這里我就不做多余的闡述。眾所周知在聊天軟件的客戶端會有一個發(fā)送消息的按鈕,而這個按鈕在代碼中的體現(xiàn)就是OnSend()。對于Onsend()首先當(dāng)然是要判斷用戶所要發(fā)送的信息是否為空,如果為空就會通過AfxMessageBox函數(shù)產(chǎn)生一個窗口,提示“不能發(fā)送空消息!”。如果不為空,就會初始化消息結(jié)構(gòu)體為SEND_MESSAGE消息,再編輯出完整的字符串信息,顯示在客戶端的聊天端口上,并將這個完整的信息發(fā)送給服務(wù)器,同時判斷消息是否發(fā)送成功,如果發(fā)送不成功,就會通過AfxMessageBox函數(shù)產(chǎn)生一個窗口,提示“網(wǎng)絡(luò)傳輸錯誤!”。 第四章 測試測試的目的是為了發(fā)現(xiàn)功能是否達到,或者是否有更多的缺陷!這里的缺陷是泛稱的,它可以指功能的錯誤,也可以指性能低下,易用性差等等。測試總是先假設(shè)程序中存在缺陷,再通過執(zhí)行程序來發(fā)現(xiàn)并最終改正缺陷。理解測試的目的是個很重要的意識問題。如果說測試的目的是為了說明程序中沒有缺陷,那么測試人員就會向這個目標(biāo)靠攏,因而下意識地選用一些不易暴露錯誤的測試示例。這樣的測試是虛假的。測試只能證明缺陷存在,而不能證明缺陷不存在。 這個真理告訴我們,對于一個復(fù)雜的系統(tǒng)而言,無論采取什么樣的測試手段都不能證明缺陷已經(jīng)不復(fù)存在?!皬氐椎販y試”只是一種理想。在實踐中,測試要考慮時間、費用等限制,不允許無休止地測試。 測試有助于提高軟件的質(zhì)量,但是提高軟件的質(zhì)量不能依賴于測試。關(guān)于測試人員的安排,由本人做白盒測試,由同學(xué)幫助做黑盒測試。第一節(jié) 白盒測試測試環(huán)境配置白盒測試可在開發(fā)系統(tǒng)的本機上直接進行,所以不需要進行特殊的配置。正確性測試正確性測試又稱功能測試,它檢查軟件的功能是否符合規(guī)格說明。由于正確性是軟件最重要的質(zhì)量因素,所以其測試也最重要。通過在程序的各個流程中插入斷點進行單步跟蹤發(fā)現(xiàn),程序中各個模塊皆可進行正常運行,數(shù)據(jù)也未發(fā)生異?,F(xiàn)象。第二節(jié) 黑盒測試測試環(huán)境配置用二臺機器通過集線器構(gòu)成一個局域網(wǎng),進行正確的網(wǎng)絡(luò)配置,三臺機器上都安裝了WINDOWS操作系統(tǒng),并安裝了本軟件的正確拷貝。功能性測試先在其中一臺機器A上啟動本軟件,掃描可以發(fā)現(xiàn)另一臺開機的B機器,但是因為B機器上的本軟件尚未啟動,所以顯示為不可聊天。當(dāng)B機器啟動了本軟件后,它的掃描過程就不僅發(fā)現(xiàn)了A機是開機狀態(tài),而且檢測到A機是可以聊天的。另外,A機立即也發(fā)現(xiàn)了B機的上線行為,并向用戶發(fā)出了提示,然后此時,不管A,B雙方,只要雙擊用戶列表中相應(yīng)的項目,即可啟動發(fā)信對話框,進行信息的輸入與發(fā)送,同時,對方均可進行正確的接收和回復(fù)。所以,功能測試為成功。容錯性測試容錯性測試是檢查軟件在異常條件下的行為。容錯性好的軟件能確保系統(tǒng)不發(fā)生無法意料的事故。 經(jīng)檢查,當(dāng)用戶輸入無效操作時,系統(tǒng)總是能檢測到無效操作,對用戶進行相應(yīng)的信息反饋,并合理的做出內(nèi)部處理。當(dāng)系統(tǒng)本身發(fā)生錯誤,比如網(wǎng)絡(luò)初始化失敗,綁定套接字失敗,數(shù)據(jù)讀取失敗等,都會進行相對應(yīng)的正確處理。性能與效率測試關(guān)于性能的問題,只有在程序啟動的時候,掃描網(wǎng)絡(luò)需要占用較多的系統(tǒng)資源和時間。至于聊天信息的發(fā)送和接收,在局域網(wǎng)內(nèi)幾乎就是瞬間響應(yīng),效率完全滿足用戶要求。易用性測試易用性測試沒有一個量化的指標(biāo),主觀性較強。一般認為,如果一個系統(tǒng)可以讓用戶不查閱手冊即可正確使用其所有功能,那么這個系統(tǒng)就具有良好的易用性。本程序即可做到使以前從未使用過的用戶完全正確使用,所以具有比較好的易用性。 結(jié) 論在當(dāng)今電腦網(wǎng)絡(luò)密布的世界當(dāng)中,一個簡單高效的局域網(wǎng)通信工具是如此的具有實用性,所以我們應(yīng)當(dāng)重視對它的相關(guān)研究與開發(fā)。在這次的畢業(yè)設(shè)計中,我應(yīng)用了VC++,在這一重要的領(lǐng)域進行了相關(guān)的實踐,不管是對我的研究能力,還是實際動手能力,還是資料查閱能力,都起了相當(dāng)大的益處。所以,我決定認真總結(jié)這次畢業(yè)設(shè)計的經(jīng)驗,以及學(xué)習(xí)到的知識,來更加的充實自己的頭腦和完善自己的知識結(jié)構(gòu)。從這次設(shè)計中,我充分認識到了VC++的高效的開發(fā)能力,以及WINDOWS平臺一如既往的易用性。它的那些完善的編程接口,的確大大方便了開發(fā)人員的工作,當(dāng)然也使得它這個系統(tǒng)本身的推廣更加的簡單。另外,我也在這次設(shè)計中看到了自己的許多不足之處,比如當(dāng)系統(tǒng)編寫碰到困境的時候,我想過要刪減系統(tǒng)的功能,以便系統(tǒng)的得以完成,但是我終于克服了這些懦弱的想法,最終按預(yù)想的結(jié)果完成了整個系統(tǒng)。我的知識結(jié)構(gòu)也不是足夠的充分,尤其是軟件工程部分的知識,因為沒有做真正的工業(yè)化的系統(tǒng)設(shè)計,甚至連畢業(yè)設(shè)計這樣的系統(tǒng)都沒有做過,所以很多步驟都是自己臨時學(xué)習(xí),大大影響了系統(tǒng)的開發(fā)進度。既然設(shè)計已經(jīng)完成,論文也寫到結(jié)論的地方,我希望自己能以一個良好的心態(tài)順利畢業(yè),走向社會。 參考文獻[1] (第5版)[M]. 電子工業(yè)出版社,2007年.[2] 汪曉平,[M].人民郵電出版社,[3] [M].[4] Brain , Dennis C Programming Language[M].[5] [J].揚州職業(yè)大學(xué)學(xué)報,2008(2).[6] James Networking –A TopDown Featuring the Internet[M]..[7] C++程序設(shè)計基礎(chǔ)教程[M].清華大學(xué)出版社,[8] Bjarne C++ Programming Languge[M].[9] Charles [M].[10] Anthony Ohlund,Windows 網(wǎng)絡(luò)編程[M].清華大學(xué)出版社,[11] 汪曉平,[M].人民郵電出版社,[12] [J].西安聯(lián)合大學(xué)學(xué)報,2002(4).[13] [M].[14] [M].[15] [J].南京曉莊學(xué)院學(xué)報,2001(4).
點擊復(fù)制文檔內(nèi)容
黨政相關(guān)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1