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

正文內(nèi)容

畢業(yè)設(shè)計論文--基于vc的局域網(wǎng)聊天室-文庫吧在線文庫

2025-01-16 17:57上一頁面

下一頁面
  

【正文】 服務(wù)器壓力可想而知(難怪平時很少見到使用 MSN 進行語音視頻聊天的)。可視化技術(shù)是當前發(fā)展迅速并引人注目的技術(shù)之一,它的特點是把原來抽象的數(shù)字、表格、功能邏輯等用直觀的圖形、圖象的形式表現(xiàn)出來 [5]。 套接字是從英文單詞 socket 翻譯過來的 , ( Socket 在英文中是插座的意思 ,在這里設(shè)計者實際上是暗指 電話插座。當然 ,套接字句柄和文件句柄是不同的 ,武漢理工大學畢業(yè)設(shè)計(論文) 6 文件句柄指向一個特定的文件和設(shè)備 ,而套接字句柄并不代表一個特定的終點或目標地址。其過程好像客戶機在給服務(wù)器打電話 ,只有服務(wù)器拿起了聽 筒 ,才有可能開始傳輸數(shù)據(jù) ,這種方式對應(yīng)的 TCP 協(xié)議。其次 ,網(wǎng)間進程通信完全是異步的 ,相 互通信的進程間既不存在父子關(guān)系 ,又不共享內(nèi)存緩沖區(qū) ,因此需要一種機制為希望通信的進程間建立聯(lián)系 ,為二者的數(shù)據(jù)交換提供同步 [9]。 2) 向服務(wù)器發(fā)服務(wù)請求 ,等待并接收應(yīng)答 。 為了利用重載套接字的消息相應(yīng)函數(shù) 必須從 CAsyncSocket 派生出自己的套接字類 ,有時為了分開監(jiān)聽套接字和客戶端套接字 ,還應(yīng)該分別派生監(jiān)聽套接字類和客戶端套接字類。 ( 6) Send(): 用于向套接字發(fā)送數(shù)據(jù)。 ( 3) OnSend(): 框架調(diào)用此函數(shù)來通知該套接字現(xiàn)在可以調(diào)用 Send 函數(shù)來傳送數(shù)據(jù)。當用戶進入聊天室后,服務(wù)器會發(fā)送相應(yīng)的消息通知該用戶進入了聊天室。對于基本內(nèi)容發(fā)送及接受消息,設(shè)計都以比較突出的方式顯示,并且占據(jù)大部分界面。代碼如下: class csocket:public CSocket { public: 注意勾選這項了! 武漢理工大學畢業(yè)設(shè)計(論文) 13 void OnReceive(int i){ dlgonrev(mynum)。 }。該代碼意為用對象 dlg 調(diào)用函數(shù) onrev(), onrev()在類 CTcpseverDlg 中做了聲明和定義, 后續(xù)會 去分析這個函數(shù)。 char ss[100]。i=csnum。并且在發(fā) 送完成后把信息打印到自己的屏幕上。 return FALSE。 武漢理工大學畢業(yè)設(shè)計(論文) 15 wndSetWindowText(str)。 return TRUE。首先服務(wù)器有一個默認設(shè)置,服務(wù)器名稱默武漢理工大學畢業(yè)設(shè)計(論文) 16 認值為“亡羊哺狼”,默認端口號是 ,在 32 位機器上端口號有 65536 個。當然從 102565535 之間的端口不可能被全部占用。i++) { if(csrev[i]) { if( sended=csrev[i].Send(str,len)) { SetDlgItemText(IDC_EDIT2,)。 int port。amp。 cwEnableWindow(false)。 CWnd* wnd。 } } 前面一部分代碼捕捉了端口號,但是端口號是以字符串的形式處理的,而不是數(shù)字。打印出了服務(wù)器的監(jiān)聽端口號,昵稱等等,這些由程序動態(tài)獲取。 (0,SS_BITMAP)。 wndShowWindow(SW_HIDE)。 上面函數(shù)意思為當點擊靜態(tài)文本時,先獲取文本中的內(nèi)容,然后將其隱藏。 CString str。 } 該函數(shù)當點擊對話框時會被系統(tǒng)自動調(diào)用,函數(shù) 將編輯框中上的內(nèi)容設(shè)置到了靜態(tài)文本中,然后顯示靜態(tài)文本,隱藏了編輯框。 static CRect rectLarge。 =。 SetWindowPos(NULL,0,0,(),(),SWP_NOMOVE|SWP_NOZORDER )。記錄矩形區(qū)域信息。 服務(wù)端中,要派生出自己的 csocket 類,基類可以選擇 CAsyncSocket 也可以是 CSocket。 void setp(CTcpseverDlg * severdlg,int num){ mynum=num。 OnClose 為當失去連接后系統(tǒng)自動調(diào)用。i=csnum。當屏幕內(nèi)容不為空時。 在后來的學習中終于了解到多線程編程的重要性 , 之前的 整個 程序只有 一個主線程,線程一直會停留在監(jiān)聽狀態(tài),程序肯定不能運行其他功能 ! 發(fā)現(xiàn)問題后又開始學習多線程編程,準備分出一條線程處理監(jiān)聽事件 ,其它的線程處理其它事件 。 需要指出的一點,不提倡使用全局函數(shù)和變量是有原因的。 CSocket 是在 CAsyncSocket 基礎(chǔ)上擴展的類, CAsyncSocket 封裝了很多函數(shù),其中的OnAccept、 OnSend、 OnReceive、 OnClose、 OnConnect 函數(shù)被應(yīng)用程序框架自動調(diào)用。 當某個用戶 退出 聊天室后,框架會自動調(diào)用函數(shù) OnClose(),這樣就可以實時的獲取用戶的活動情況,正確的 顯示 在線狀態(tài) ,并發(fā)送用戶退出信息 。對于未知的錯誤信息總是難以下手,在網(wǎng)上也找到了很多有關(guān)這些錯誤的解決方法,不過最終沒有成功完成語音的發(fā)送。當移動鼠標點擊那塊區(qū)域以外的任何一個區(qū)域時便顯示靜態(tài)文本,影藏編輯框。 }。 private: CTcpseverDlg *dlg。 void CTcpseverDlg::OnClose() { CString str。 csrev[i].Close()。 if (pSysMenu != NULL) { CString strAboutMenu。 wnd=GetDlgItem(IDC_MARKST)。 (IDB_BITMAP1)。 wndGetWindowText(str)。 int port。amp。 cwEnableWindow(false)。 CWnd* wnd。 } } 當移動鼠標,可以判斷是否可以清空聊天窗口的信息。 index=index%5。 } CDialog::OnMouseMove(nFlags, point)。 wndGetWindowText(strPort)。 cwSetWindowText(本服務(wù)器名稱為 : +severname+\r\n 正在后臺等待用戶連接 ,監(jiān)聽端口 :+portstr+?? )。 ()。 ()。 wndSetWindowText(str)。 // return TRUE unless you set the focus to a control } 點擊對話框的任意地方,確定輸入信息。 wndShowWindow(SW_HIDE)。 } } SetIcon(m_hIcon, TRUE)。 ASSERT((IDM_ABOUTBOX amp。 len=()。這里只插入套接字初始化的部分代碼。 }。但是通過 不斷的 努力 學習 ,終于有所收獲,成功解決眾多問題。 當時很疑惑為什么點中了就可以變成編輯框?qū)懭胛淖?, 反復(fù)思考斟酌最后還是知道該如何實現(xiàn)。多服務(wù)器 的連入很有必要,可以解決信息堵塞問題 [15]。 服務(wù)器監(jiān)聽時要設(shè)置監(jiān)聽端口,創(chuàng)建監(jiān)聽套接字,這樣客戶端才可以成功監(jiān)聽。 而且全局變量可能會出現(xiàn)重復(fù)定義問題,使編譯出現(xiàn)錯誤。線程函數(shù)定義為 全局函數(shù)(也可以使某個類的靜態(tài)函數(shù)),為什么線程里的數(shù)據(jù)不能直接傳送呢?最后只得采用 PostMessage()的方法將消息 回傳, 這次 成功的完成了消息傳遞。雖然 MFC 封裝 了很多有關(guān) 套接字 的 API 函數(shù), 但實現(xiàn)起來也 不簡單,對底層數(shù)據(jù)分析和 實現(xiàn)要求較高 [14]。 if(m_recvCtr==) { GetDlgItem(IDC_CLEAN)EnableWindow(false)。 void CTcpseverDlg::onac() { (csrev[++csnum])。 int mynum。 void OnAccept(int i){ dlgonac()。值得注意的一點是,當服務(wù)器退出后, 客戶端斷開連接要提示給用戶。這個函數(shù)就是記錄下整個對話框的大小尺寸等信息。 SetDlgItemText(IDC_SHOW,str)。rectLarge)。這樣可以去掉不是很關(guān)心的內(nèi)容。 wnd=GetDlgItem(IDC_MARKST)。 設(shè)置好文本后 , 點擊編輯框以外的任何地方,都可以把內(nèi)容做更新。 } 這是公布框的設(shè)計,其實在同一區(qū)域中擺放了兩個控件,一個靜態(tài)文本,一個編輯框。 void CTcpseverDlg::OnMarkst() { CWnd* wnd。 index=index%5。然后通過 EnableWindow()把某些窗體設(shè)置為不可點擊。 wndGetWindowText(strPort)。 cwSetWindowText(本服務(wù)器名稱為 : +severname+\r\n 正在后臺等待用戶連接 ,監(jiān)聽端口 :+portstr+……) 。 ()。 ()。 } } } } 這是點擊控件“發(fā)送”的消息響應(yīng)函數(shù)。 str=severname+:+str。當聊天區(qū)有信息記錄后會變成可點擊按鈕。這樣只需 在最前面定義一個 CWnd 的指針就可以動態(tài)的獲取相應(yīng)消息。 CBitmap bitmap。 CString str。在這些消息調(diào)用中只要正確的加入自己的信息就可以處理好各種事件。 SetDlgItemText(IDC_EDIT1,str)。\039。 當服務(wù)器收到網(wǎng)絡(luò)發(fā)送的消息后,框架自動調(diào)用函數(shù) OnReceive(),這樣就執(zhí)行了代碼dlgonrev(mynum)。 在上面的代碼中,只解釋一個封裝于 CAsyncSocket 中的函數(shù)。 void OnClose(int i){ dlgoncl()。這樣編譯器會自動的加載有關(guān) Socket的相關(guān)動態(tài)連接庫和靜態(tài)庫及相應(yīng)的頭文件到程序中。該協(xié)議所要求用戶必須先確定連接成功后才能發(fā)送消息,如果是 UDP 協(xié)議那可以不進行連接過程,這樣實時性比較好 [11]。然后啟動客戶端(可啟動多個),設(shè)置用戶昵稱和連接端口等信息,連接服務(wù)器??梢栽谶@些函數(shù)中寫入自己的代碼,從而更好的完成通信過程。 ( 2) Create(): 創(chuàng)建套接字,在創(chuàng)建監(jiān)聽套接字時必須加上端口號。只要系統(tǒng)運行 ,該服務(wù)進程一直存在 ,直到正常終止或被強迫終止。服務(wù)完成后 ,關(guān)閉與客戶的通信鏈路 ,并終止 。由于兩臺計算機之間采用的是客戶機 /服務(wù)器模式 ,為保證數(shù)據(jù)的可靠性 ,可以 采用了基于流方式的套接字編程 [8]。 CSocket 類提供了一個高級的 Socket 支持 ,運用了 MFC 的序列化類來提供和傳輸 Socket 對象。套接字是可以被命名和尋址的通信端點 ,是網(wǎng)絡(luò)互連終點。 網(wǎng)絡(luò)編程 80 年代初,美國政府的高級研究工程機構(gòu)( ARPA)給加利福尼亞大 Berkeley 分校提供了資金,讓他們在 UNIX 操作系統(tǒng)下實現(xiàn) TCP/IP 協(xié) 議。 包含了一個文本編輯器、資源編輯器、工程編譯工具、一個增量連接器、源代碼瀏覽器、集成調(diào)試工具,以及一套聯(lián)機文檔??梢源_定騰訊 是以多服務(wù)器提供服務(wù)、服務(wù)器總控客戶端、客戶端之間 UDP 直連通信的。 第三章主要介紹開發(fā)平臺和網(wǎng)絡(luò)編程,對 Socket 的歷史和發(fā)展簡單描述。它有兩個程序組成:服務(wù)器和客戶端,首先需要登錄服務(wù)器,需要指定服務(wù)器地址和端口號,同時設(shè)置一個網(wǎng)名,與服務(wù)器建立連接,如果所取網(wǎng)名已經(jīng)被其他已經(jīng)登錄的客戶端使用,服務(wù)器會告訴客戶端 ,要求重新登錄。 本系統(tǒng)采用基于 Socket 的方法實現(xiàn)局域網(wǎng)通信 , 基于 Socket 的局域網(wǎng)通信軟件可以為企業(yè)原有的局域網(wǎng)提供一種良好,安全,快速的通信機制。出于高效、快速地處理各種事務(wù)的目的,越來越多的企業(yè)在其內(nèi)部使用局域網(wǎng)來進行工作。 該聊天室是一套適用于 Inter 網(wǎng)絡(luò)使用的網(wǎng)絡(luò)聊天 室 ,其操作簡單,靈活性好,運行也比較穩(wěn)定。 本項目采用軟件工程的方法, 綜合運用 程序 設(shè)計技術(shù)、網(wǎng)絡(luò)技術(shù),以 Visual C++ 作為系統(tǒng)前臺應(yīng)用程序開發(fā)工具 , 主要研究了在 TCP/IP 協(xié)議下 的 局域網(wǎng)聊天室。 系統(tǒng)采用 CSocket 實現(xiàn)連網(wǎng)功能。系統(tǒng)采用 C/S 結(jié)構(gòu),客戶端與客戶端以及客戶端與服務(wù)器端之間通過 CSocket 傳送消息 [1]。即時通訊的發(fā)展 不論是 在基礎(chǔ)應(yīng)用方面 還是在擴展應(yīng)用方面都有著飛躍。 武漢理工大學畢業(yè)設(shè)計(論文) 2 如今基于局域網(wǎng)的即時通信工具一般采用 UDP 或者 TCP 協(xié)議體系來實現(xiàn) ,開發(fā)技術(shù)已經(jīng)比較成熟。選擇 TCP 協(xié)議而不選 UDP 是為了保證信息的可靠性,不同于 UDP 協(xié)議, TCP 要求在獲得可靠連接后才發(fā)送消息。 騰訊無疑是國內(nèi)即時通訊市場的霸主,自從 99 年進入即時通訊領(lǐng)域并迅速占市場之后,其在國內(nèi)用戶數(shù)量始終高居榜首,即 使近幾年面對微軟 MSN 的強大攻勢,騰訊 的時常占有率依然穩(wěn)步增長。 上述軟件 都實現(xiàn)了廣域網(wǎng)上的即時通信 ,在使用方面 各有特色,在實現(xiàn)方面也各有所長 。可視化編程是它的重要應(yīng)用之一。因為在 Socket 環(huán)境下編程很像是打電話的模擬 ,Inter 的 IP 地址
點擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1