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

正文內(nèi)容

畢業(yè)設(shè)計(jì)論文--基于vc的局域網(wǎng)聊天室(留存版)

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

下一頁面
  

【正文】 后, 客戶端斷開連接要提示給用戶。 int mynum。 if(m_recvCtr==) { GetDlgItem(IDC_CLEAN)EnableWindow(false)。線程函數(shù)定義為 全局函數(shù)(也可以使某個(gè)類的靜態(tài)函數(shù)),為什么線程里的數(shù)據(jù)不能直接傳送呢?最后只得采用 PostMessage()的方法將消息 回傳, 這次 成功的完成了消息傳遞。 服務(wù)器監(jiān)聽時(shí)要設(shè)置監(jiān)聽端口,創(chuàng)建監(jiān)聽套接字,這樣客戶端才可以成功監(jiān)聽。 當(dāng)時(shí)很疑惑為什么點(diǎn)中了就可以變成編輯框?qū)懭胛淖?, 反復(fù)思考斟酌最后還是知道該如何實(shí)現(xiàn)。 }。 len=()。 } } SetIcon(m_hIcon, TRUE)。 // return TRUE unless you set the focus to a control } 點(diǎn)擊對(duì)話框的任意地方,確定輸入信息。 ()。 cwSetWindowText(本服務(wù)器名稱為 : +severname+\r\n 正在后臺(tái)等待用戶連接 ,監(jiān)聽端口 :+portstr+?? )。 } CDialog::OnMouseMove(nFlags, point)。 } } 當(dāng)移動(dòng)鼠標(biāo),可以判斷是否可以清空聊天窗口的信息。 cwEnableWindow(false)。 int port。 (IDB_BITMAP1)。 if (pSysMenu != NULL) { CString strAboutMenu。 void CTcpseverDlg::OnClose() { CString str。 }。對(duì)于未知的錯(cuò)誤信息總是難以下手,在網(wǎng)上也找到了很多有關(guān)這些錯(cuò)誤的解決方法,不過最終沒有成功完成語音的發(fā)送。 CSocket 是在 CAsyncSocket 基礎(chǔ)上擴(kuò)展的類, CAsyncSocket 封裝了很多函數(shù),其中的OnAccept、 OnSend、 OnReceive、 OnClose、 OnConnect 函數(shù)被應(yīng)用程序框架自動(dòng)調(diào)用。 在后來的學(xué)習(xí)中終于了解到多線程編程的重要性 , 之前的 整個(gè) 程序只有 一個(gè)主線程,線程一直會(huì)停留在監(jiān)聽狀態(tài),程序肯定不能運(yùn)行其他功能 ! 發(fā)現(xiàn)問題后又開始學(xué)習(xí)多線程編程,準(zhǔn)備分出一條線程處理監(jiān)聽事件 ,其它的線程處理其它事件 。i=csnum。 void setp(CTcpseverDlg * severdlg,int num){ mynum=num。記錄矩形區(qū)域信息。 =。 } 該函數(shù)當(dāng)點(diǎn)擊對(duì)話框時(shí)會(huì)被系統(tǒng)自動(dòng)調(diào)用,函數(shù) 將編輯框中上的內(nèi)容設(shè)置到了靜態(tài)文本中,然后顯示靜態(tài)文本,隱藏了編輯框。 上面函數(shù)意思為當(dāng)點(diǎn)擊靜態(tài)文本時(shí),先獲取文本中的內(nèi)容,然后將其隱藏。 (0,SS_BITMAP)。 } } 前面一部分代碼捕捉了端口號(hào),但是端口號(hào)是以字符串的形式處理的,而不是數(shù)字。 cwEnableWindow(false)。 int port。當(dāng)然從 102565535 之間的端口不可能被全部占用。 return TRUE。 return FALSE。i=csnum。該代碼意為用對(duì)象 dlg 調(diào)用函數(shù) onrev(), onrev()在類 CTcpseverDlg 中做了聲明和定義, 后續(xù)會(huì) 去分析這個(gè)函數(shù)。代碼如下: class csocket:public CSocket { public: 注意勾選這項(xiàng)了! 武漢理工大學(xué)畢業(yè)設(shè)計(jì)(論文) 13 void OnReceive(int i){ dlgonrev(mynum)。當(dāng)用戶進(jìn)入聊天室后,服務(wù)器會(huì)發(fā)送相應(yīng)的消息通知該用戶進(jìn)入了聊天室。 ( 6) Send(): 用于向套接字發(fā)送數(shù)據(jù)。 2) 向服務(wù)器發(fā)服務(wù)請(qǐng)求 ,等待并接收應(yīng)答 。其過程好像客戶機(jī)在給服務(wù)器打電話 ,只有服務(wù)器拿起了聽 筒 ,才有可能開始傳輸數(shù)據(jù) ,這種方式對(duì)應(yīng)的 TCP 協(xié)議。 套接字是從英文單詞 socket 翻譯過來的 , ( Socket 在英文中是插座的意思 ,在這里設(shè)計(jì)者實(shí)際上是暗指 電話插座。而 MSN Messenger 所有數(shù)據(jù)都要經(jīng)過服務(wù)器,服務(wù)器壓力可想而知(難怪平時(shí)很少見到使用 MSN 進(jìn)行語音視頻聊天的)。 研究本課題需要熟練掌握 VC++語言,并且熟悉 VC 平臺(tái) 的操作 , 利用 socket 編 程技術(shù) 、 TCP 協(xié)議 進(jìn)行局域網(wǎng)聊天軟件的實(shí)際開發(fā)。 隨著 用戶 對(duì)軟件功能的 需求 不斷提高 ,即時(shí)通訊的產(chǎn)品也不斷 地更新?lián)Q代 。 整個(gè)工程采用結(jié)構(gòu)化的方式進(jìn)行編譯,逐步完善系統(tǒng)功能。 關(guān)鍵詞: VC++;套接字;傳輸控制協(xié)議;網(wǎng)絡(luò) ;聊天室 武漢理工大學(xué)畢業(yè)設(shè)計(jì)(論文) II Abstract Along with the highspeed development of the puter science and Inter, chatting on line has been an important method in our munication. Comparing with Email and telephone, the chatline service is more realtime and effective. The subject under discussion adopts the method of the software project ,use procedure designing technique and the work technology. The project use Visual C++ as the development tools,mainly studies under the TCP/IP protocol of LAN chat rooms. This local area work chat tool adopts client/server mechanism(C/S) and is posed of two ponents:the server and the client. The server model is mainly used to prootect all users ’ information ,incuuding user’s name and so on。它的實(shí)現(xiàn)無需對(duì)企業(yè)原有的局域網(wǎng)硬件進(jìn)行任何改動(dòng),具有實(shí)現(xiàn)成本低廉的優(yōu)點(diǎn),它的使用能有效地降低局域網(wǎng)通信負(fù)荷,提高局域網(wǎng)的使用效率,可以很好地解決企業(yè)內(nèi)部局域網(wǎng)的各種通信需求。 第四章討論了整個(gè)聊天系統(tǒng)的設(shè)計(jì),介紹了客戶端 /服務(wù)器模型,并討論了系統(tǒng)的實(shí)現(xiàn)原理和界面設(shè)計(jì)。使用 ,可以完成創(chuàng)建、調(diào)試、修改應(yīng)用程序等的各種操作。換句話說 ,網(wǎng)絡(luò)互連是兩個(gè)計(jì)算機(jī)或處理器通過網(wǎng)絡(luò)相互傳輸數(shù)據(jù)。 武漢理工大學(xué)畢業(yè)設(shè)計(jì)(論文) 7 4 局域網(wǎng)聊天室的設(shè)計(jì) 客戶機(jī) /服務(wù)器模式 通信的兩個(gè)應(yīng)用程序間相互作用的主要模式是客戶機(jī) /服務(wù)器模式 ,即客戶向服務(wù)器發(fā)出服務(wù)請(qǐng)求 ,服務(wù)器接收到請(qǐng)求后 ,提供相應(yīng)的服務(wù)。 系統(tǒng)實(shí)現(xiàn)原理 聊天系統(tǒng)的設(shè)計(jì)跟普通網(wǎng)站設(shè)計(jì)有著許多不同的地方,普通網(wǎng)站設(shè)計(jì)所考慮的因素,例如,普通網(wǎng)站需要對(duì)布局進(jìn)入大量美化以及動(dòng)畫設(shè)計(jì)等等,而聊天室只要提供滿足訪客雙方直接實(shí)時(shí)聊天即可。具體函數(shù)見下: ( 1) OnAccept(): 監(jiān)聽套接字在端口聽到連接請(qǐng)求時(shí) 應(yīng)用程序框架自動(dòng)調(diào)用,以告知可以接受請(qǐng)求或拒絕連接。 界面設(shè)計(jì) 圖 5 界面 資源圖 在設(shè)計(jì)的過程中,當(dāng)掌握了核心思想內(nèi)容,成功完成功能實(shí)現(xiàn)后,界面設(shè)計(jì)永遠(yuǎn)是重要的部分。 }?,F(xiàn)在來 分析 onrev()在類 CTcpseverDlg 中的定義。 CEdit *ce=((CEdit*)GetDlgItem(IDC_EDIT1))。 wnd=GetDlgItem(IDC_MARKST)。 這些代碼首先對(duì)窗口進(jìn)行了一些文本設(shè)置和某些窗口的隱藏。 int len=()。 ()。 } else{ MessageBox(綁定監(jiān)聽端口失敗 ,請(qǐng)確認(rèn)該端口沒有被其它程序占用 )。最后再把信息反饋到屏幕上打印出來。 CString str。然后隱藏編輯框,顯示靜態(tài)文本。當(dāng)點(diǎn)擊后,側(cè)邊欄又顯示出 ” ” 符號(hào)。 SetWindowPos(NULL,0,0,(),(),SWP_NOMOVE|SWP_NOZORDER )。見下圖: 武漢理工大學(xué)畢業(yè)設(shè)計(jì)(論文) 23 圖 11 提示斷開連接 在 CSocket 中前面也提到過,當(dāng)某個(gè)套接字獲取到消息與其連接的套接字?jǐn)嚅_連接后。 }。 } else 武漢理工大學(xué)畢業(yè)設(shè)計(jì)(論文) 25 { GetDlgItem(IDC_CLEAN)EnableWindow(true)。接著問題又出現(xiàn) 了,雖然成功的接受和發(fā)送了消息,但是消息最后會(huì)出現(xiàn)亂碼??蛻舳擞煤瘮?shù) Connect()請(qǐng)求連接,當(dāng)連接成功后框架自動(dòng)調(diào)用函數(shù) OnAceept()。可以在 某片區(qū)域擺放兩個(gè)控件,靜態(tài)文本和編輯框。 void setp(CTcpseverDlg * severdlg,int num){ mynum=num。 for(int i=1。 // Set big icon SetIcon(m_hIcon, FALSE)。 void CTcpseverDlg::OnLButtonDown(UINT nFlags, CPoint point) { CWnd* wnd。 ()。 } else{ MessageBox(綁定監(jiān)聽端口失敗 ,請(qǐng)確認(rèn)該端口沒有被其它程序占用 )。 } 當(dāng)點(diǎn)擊圖片時(shí),可以更換圖片。 } else{ MessageBox(端口輸入有誤 ,請(qǐng)重新輸入 )。 cw=GetDlgItem(IDC_EDIT4)。 void CTcpseverDlg::Onlisten() { CString ipstr,portstr。 CBitmap bitmap。 CMenu* pSysMenu = GetSystemMenu(FALSE)。 } 武漢理工大學(xué)畢業(yè)設(shè)計(jì)(論文) 30 } 當(dāng)服務(wù)器斷開后,服務(wù)器應(yīng)該釋放所有創(chuàng)建的套接字 ,并且發(fā)送退出信息 。 class csocket:public CSocket { public: void OnReceive(int i){ dlgonrev(mynum)。 在成功完成文字聊天后也嘗試過發(fā)送語音信息, 在調(diào)用 API 函數(shù)檢測(cè)硬件 信息 時(shí)便出現(xiàn)了 問題。在 CSocket 中當(dāng)應(yīng) 用程序框架收到某些特殊事件的消息時(shí)會(huì)自動(dòng)調(diào)用某些函數(shù),在這些特殊的函數(shù)中可以寫入自己武漢理工大學(xué)畢業(yè)設(shè)計(jì)(論文) 27 的代碼來完成某些事件。 對(duì)于這 問題 可謂 百思不得其解,在一次不經(jīng)意的學(xué)習(xí)中發(fā)現(xiàn)了阻塞這種說法,雖然之前也知道 SOCKET 是 堵塞編程,但對(duì)阻塞一 詞 還是不明其意。 void CTcpseverDlg::oncl() { for(int i=1。 }。rectSeparate)。 =。 CDialog::OnLButtonDown(nFlags, point)。這樣當(dāng)啟動(dòng)服務(wù)端后顯示出來的就是靜態(tài)文本了,這樣比較美觀。 (bit[index])。 } else{ MessageBox(端口輸入有誤 ,請(qǐng)重新輸入 )。 發(fā)送的聊天記錄 灰色了 可清空了 武漢理工大學(xué)畢業(yè)設(shè)計(jì)(論文) 18 cw=GetDlgItem(IDC_EDIT4)。 武漢理工大學(xué)畢業(yè)設(shè)計(jì)(論文) 17 圖 8 用戶登入后聊天圖 void CTcpseverDlg::Onlisten() { CString ipstr,portstr。 在監(jiān)聽端口過程中可能發(fā)生端口被占用的錯(cuò)誤信息,這樣就得重新設(shè)置端口了。 ((HBITMAP)())。 部分代碼如下: if (!AfxSocketInit()) { AfxMessageBox(IDP_SOCKETS_INIT_FAILED)。 for(i=1。在函數(shù)的實(shí)現(xiàn)中 加入了自己的代碼: dlgonrev(mynum)。當(dāng)有相關(guān)消息到來時(shí),應(yīng)用框架會(huì)自動(dòng)調(diào)用這些函數(shù),從而可以比較方便的實(shí)現(xiàn)套接字之間的信息傳輸。這樣登入服務(wù)器的用戶們之間就可以進(jìn)行簡(jiǎn)單的文字聊天了。 ( 5) Accept(): 監(jiān)聽套接字專用,用于接受客戶端通過網(wǎng)絡(luò)發(fā)送的連接請(qǐng)求,建立連接。 客戶方 : 1) 打開一通信通道 ,并連接到服務(wù)器所在主機(jī)的特定端口 。在這種方式下 ,兩個(gè)通訊的應(yīng)用程序之間先要建立一種虛擬的連接。今天,SOCKET 接口是 TCP/IP 網(wǎng)絡(luò)最為通用的 API,也是 INTERNET 上進(jìn)行應(yīng)用開發(fā)最為通用的 API。 武漢理工大學(xué)畢業(yè)設(shè)計(jì)(論文) 4 圖 2 MSN 服務(wù)器 客戶端模型 騰訊使用的模型中,服務(wù)器主要處理客戶端各種狀態(tài)的控制,可以極大
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1