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

正文內(nèi)容

畢業(yè)設(shè)計(jì)論文--基于vc的局域網(wǎng)聊天室-資料下載頁(yè)

2024-12-03 17:57本頁(yè)面

【導(dǎo)讀】隨著計(jì)算機(jī)科學(xué)和Inter的飛速發(fā)展,網(wǎng)上聊天已成為人們相互交流的一種方式,與E-mail、電話(huà)相比,聊天服務(wù)更具有實(shí)時(shí)性和有效性。本項(xiàng)目采用軟件工程的方法,綜

  

【正文】 架也會(huì)調(diào)用上述函數(shù),但不會(huì)實(shí)現(xiàn)任何內(nèi)容。 服務(wù)器監(jiān)聽(tīng)時(shí)要設(shè)置監(jiān)聽(tīng)端口,創(chuàng)建監(jiān)聽(tīng)套接字,這樣客戶(hù)端才可以成功監(jiān)聽(tīng)??蛻?hù)端用函數(shù) Connect()請(qǐng)求連接,當(dāng)連接成功后框架自動(dòng)調(diào)用函數(shù) OnAceept()。然后連入服務(wù)器的客戶(hù)端就可以進(jìn)行聊天了。在聊天過(guò)程中當(dāng)消息到來(lái)時(shí)框架會(huì)自動(dòng)調(diào)用函數(shù)OnReceive,可以在這個(gè)函數(shù)內(nèi)部寫(xiě)入 函數(shù) Receive()接收 消息。 當(dāng)某個(gè)用戶(hù) 退出 聊天室后,框架會(huì)自動(dòng)調(diào)用函數(shù) OnClose(),這樣就可以實(shí)時(shí)的獲取用戶(hù)的活動(dòng)情況,正確的 顯示 在線(xiàn)狀態(tài) ,并發(fā)送用戶(hù)退出信息 。 服務(wù)器 將 所有客戶(hù)端連接在一個(gè)網(wǎng)絡(luò)中,所有 客戶(hù)端發(fā)送 的信息都 是 發(fā)送到服務(wù)器,通過(guò)消息過(guò)濾后 服務(wù)器再將 其 發(fā)送給各個(gè)客戶(hù)端。 所以 服務(wù)器的工作量非常大。如果是進(jìn)行大規(guī)模的圖片、語(yǔ)音、視頻傳輸時(shí),特別是在用戶(hù)很多的情況下 服務(wù)器承受的 壓力 也是很大 的 。多服務(wù)器 的連入很有必要,可以解決信息堵塞問(wèn)題 [15]。 在 開(kāi)發(fā) 的過(guò)程中 原想 進(jìn)行更多研究,比如圖片發(fā)送、抖動(dòng)窗口、語(yǔ)音視頻發(fā)送、以及文件傳送等等。但是發(fā)現(xiàn) 自己掌握的知識(shí)有限,并且時(shí)間短暫, 所以只實(shí)現(xiàn)了文字聊天功能 。 在成功完成文字聊天后也嘗試過(guò)發(fā)送語(yǔ)音信息, 在調(diào)用 API 函數(shù)檢測(cè)硬件 信息 時(shí)便出現(xiàn)了 問(wèn)題。對(duì)于未知的錯(cuò)誤信息總是難以下手,在網(wǎng)上也找到了很多有關(guān)這些錯(cuò)誤的解決方法,不過(guò)最終沒(méi)有成功完成語(yǔ)音的發(fā)送。 當(dāng) 基本功能實(shí)現(xiàn)后,便開(kāi)始實(shí)現(xiàn)界面設(shè)計(jì),看了孫鑫的視頻教學(xué),對(duì)基本界面開(kāi)發(fā)也有所了解。 對(duì) 騰訊 軟件的寫(xiě)入狀態(tài)比較感興趣。當(dāng)點(diǎn)擊狀態(tài)欄時(shí)那塊區(qū)域會(huì)變成可編輯的狀態(tài),并且那些以前已經(jīng)存在的文字會(huì)被全部選中。 當(dāng)時(shí)很疑惑為什么點(diǎn)中了就可以變成編輯框?qū)懭胛淖?, 反復(fù)思考斟酌最后還是知道該如何實(shí)現(xiàn)??梢栽?某片區(qū)域擺放兩個(gè)控件,靜態(tài)文本和編輯框。靜態(tài)文本用于顯示文字,編輯框用于編輯輸入文字。當(dāng)點(diǎn)擊那片區(qū)域后隱藏靜態(tài)文本,顯示編輯框。當(dāng)移動(dòng)鼠標(biāo)點(diǎn)擊那塊區(qū)域以外的任何一個(gè)區(qū)域時(shí)便顯示靜態(tài)文本,影藏編輯框。當(dāng)然其中還涉及了信息的傳輸?shù)葐?wèn)題。 在整個(gè)軟件開(kāi)發(fā)的過(guò)程中,感覺(jué)自己做的不是很好, 尤其是 時(shí)間上的安排 不是很合理。在編寫(xiě)代碼前對(duì)相應(yīng)知識(shí)更是知道甚少 。但是通過(guò) 不斷的 努力 學(xué)習(xí) ,終于有所收獲,成功解決眾多問(wèn)題。這 也證實(shí)了 ,只有有了壓力才會(huì)拼命的去學(xué) ,只要不斷的努力,收獲總是有的 。 武漢理工大學(xué)畢業(yè)設(shè)計(jì)(論文) 28 參考文獻(xiàn) [1] 李凌 . WinSock 2 網(wǎng)絡(luò)編程實(shí)用教程 [M]. 北京: 清華大學(xué)出版社 ,2021. [2] 孫鑫,余安萍 .VC++深入詳解 [M].北京: 電子工業(yè)出版社 , 2021. [3] Jackson M A. Principles of Program Design[M].Houston: Academic Press, 2021. [4] 候俊杰 .深入淺出 MFC[M].武漢: 華中科技大學(xué)出版社 , 2021. [5] 馮宏華,徐瑩 . C++應(yīng)用程序性能優(yōu)化 [M]. 北京: 電子工業(yè)出版社 ,2021. [6] 張虹 . 軟件工程與軟件開(kāi)發(fā)工具 [M]. 北京: 清華大學(xué)出版社 ,2021. [7] 羅軍舟. TCP/IP 協(xié)議及網(wǎng)絡(luò)編程技術(shù) [M]. 北京: 清華大學(xué)出版社 ,2021. [8] 張?jiān)?.Visual C++網(wǎng)絡(luò)程序設(shè)計(jì)實(shí)例詳解 [M].北京: 人民郵電出版社, 2021. [9] Bruce Eckel. Thinking in C++[M]. 北京: 機(jī)械工業(yè)出版社 ,2021. [10] 張正秋 .WINDOWS 程序捆綁核心編程 [M].北京: 清華大學(xué)出版社 ,2021. [11] 錢(qián)樂(lè)秋 .軟件工程 [M].北京: 清華大學(xué)出版社 ,2021. [12] 鄭人杰 .實(shí)用軟件工程 [M].北京: 清華大學(xué)出版社 ,2021. [13] 陳世鴻,彭蓉 . 面向?qū)ο筌浖こ?[M]. 北京 : 電子工業(yè)出版社 ,1999. [14] Programmingfor Microsoft Windows[M] .Microsoft press,2021. [15] 史濟(jì)民 .軟件工程 原理 與應(yīng)用 [M].北京: 高等教育出版社 ,2021. 武漢理工大學(xué)畢業(yè)設(shè)計(jì)(論文) 29 附 錄 創(chuàng)建基于 CSocket 或 CasyncSocket 的類(lèi),類(lèi)中重新定義應(yīng)用程序框架自動(dòng)調(diào)用的函數(shù),完成各項(xiàng)功能的實(shí)現(xiàn)。 class csocket:public CSocket { public: void OnReceive(int i){ dlgonrev(mynum)。 }。 void OnAccept(int i){ dlgonac()。 }。 void OnClose(int i){ dlgoncl()。 }。 void setp(CTcpseverDlg * severdlg,int num){ mynum=num。 dlg=severdlg。 }。 private: CTcpseverDlg *dlg。 int mynum。 }。 在應(yīng)用程序類(lèi)中的初始化函數(shù)里對(duì)套接字的版本進(jìn)行協(xié)商,選擇合適的版本號(hào)。這里只插入套接字初始化的部分代碼。 BOOL CTcpseverApp::InitInstance() { if (!AfxSocketInit()) { AfxMessageBox(IDP_SOCKETS_INIT_FAILED)。 return FALSE。 } 武漢理工大學(xué)畢業(yè)設(shè)計(jì)(論文) 30 } 當(dāng)服務(wù)器斷開(kāi)后,服務(wù)器應(yīng)該釋放所有創(chuàng)建的套接字 ,并且發(fā)送退出信息 。 void CTcpseverDlg::OnClose() { CString str。 int len。 int confirm=MessageBox(確定退出服務(wù)器嗎 ?,其它所有用戶(hù)將失去連接 ,請(qǐng)確定,MB_YESNO|MB_ICONQUESTION)。 if(confirm==IDYES) { str=服務(wù)器: +severname+已退出 \n 您與服務(wù)器斷開(kāi)連接 。 len=()。 for(int i=1。i=csnum。i++) { if(csrev[i]) { csrev[i].Send(str,len)。 csrev[i].Close()。 } } CDialog::OnClose()。 } } 當(dāng)對(duì)話(huà)框初始化時(shí),做一些相應(yīng)的工作。 BOOL CTcpseverDlg::OnInitDialog() { CDialog::OnInitDialog()。 ASSERT((IDM_ABOUTBOX amp。 0xFFF0) == IDM_ABOUTBOX)。 ASSERT(IDM_ABOUTBOX 0xF000)。 CMenu* pSysMenu = GetSystemMenu(FALSE)。 if (pSysMenu != NULL) { CString strAboutMenu。 (IDS_ABOUTBOX)。 if (!()) 武漢理工大學(xué)畢業(yè)設(shè)計(jì)(論文) 31 { pSysMenuAppendMenu(MF_SEPARATOR)。 pSysMenuAppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu)。 } } SetIcon(m_hIcon, TRUE)。 // Set big icon SetIcon(m_hIcon, FALSE)。 // Set small icon CWnd* wnd。 CString str。 wnd=GetDlgItem(IDC_MARKST)。 wndGetWindowText(str)。 wnd=GetDlgItem(IDC_MARK)。 wndSetWindowText(str)。 wndShowWindow(SW_HIDE)。 SetDlgItemText(IDC_EDIT3,亡羊哺狼 )。 SetDlgItemText(IDC_EDIT4,1025)。 CBitmap bitmap。 (IDB_BITMAP1)。 (0,SS_BITMAP)。 ((HBITMAP)())。 return TRUE。 // return TRUE unless you set the focus to a control } 點(diǎn)擊對(duì)話(huà)框的任意地方,確定輸入信息。 void CTcpseverDlg::OnLButtonDown(UINT nFlags, CPoint point) { CWnd* wnd。 CString str。 wnd=GetDlgItem(IDC_MARK)。 wndGetWindowText(str)。 wndShowWindow(SW_HIDE)。 wnd=GetDlgItem(IDC_MARKST)。 wndShowWindow(SW_SHOW)。 wndSetWindowText(str)。 CDialog::OnLButtonDown(nFlags, point)。 } 武漢理工大學(xué)畢業(yè)設(shè)計(jì)(論文) 32 服務(wù)器實(shí)現(xiàn)端口監(jiān)聽(tīng)。 void CTcpseverDlg::Onlisten() { CString ipstr,portstr。 int port。 GetDlgItemText(IDC_EDIT3,ipstr)。 severname=ipstr。 GetDlgItemText(IDC_EDIT4,portstr)。 ()。 ()。 port=atoi(portstr)。 if(port1024amp。amp。port65536){ SetDlgItemText(IDC_listen,正在監(jiān)聽(tīng)?? )。 if((port)){ ()。 (this,csnum)。 ()。 CWnd *cw=GetDlgItem(IDC_EDIT3)。 cwEnableWindow(false)。 cw=GetDlgItem(IDC_EDIT4)。 cwEnableWindow(false)。 cw=GetDlgItem(IDC_listen)。 cwEnableWindow(false)。 cw=GetDlgItem(IDC_EDIT1)。 cwSetWindowText(本服務(wù)器名稱(chēng)為 : +severname+\r\n 正在后臺(tái)等待用戶(hù)連接 ,監(jiān)聽(tīng)端口 :+portstr+?? )。 } else{ MessageBox(綁定監(jiān)聽(tīng)端口失敗 ,請(qǐng)確認(rèn)該端口沒(méi)有被其它程序占用 )。 ()。 } CString strServ,strPort。 CWnd* wnd。 wnd=GetDlgItem(IDC_EDIT3)。 wndGetWindowText(strServ)。 武漢理工大學(xué)畢業(yè)設(shè)計(jì)(論文) 33 wnd=GetDlgItem(IDC_EDIT4)。 wndGetWindowText(strPort)。 wnd=GetDlgItem(IDC_SERVINFORM)。 wndSetWindowText(\n****************服務(wù)器名稱(chēng): \n+strServ+\n\n 端口號(hào) : +strPort+\n\n 協(xié)議類(lèi)型: TCP\n 傳輸控制協(xié)議 \n****************)。 } else{ MessageBox(端口輸入有誤 ,請(qǐng)重新輸入 )。 } } 當(dāng)移動(dòng)鼠標(biāo),可以判斷是否可以清空聊天窗口的信息。 void CTcpseverDlg::OnMouseMove(UINT nFlags, CPoint point) { UpdateData()。 if(m_recvCtr==) { GetDlgItem(IDC_CLEAN)EnableWindow(false)。 } else { GetDlgItem(IDC_CLEAN)EnableWindow(true)。 } CDialog::OnMouseMove(nFlags, point)。 } 當(dāng)點(diǎn)擊圖片時(shí),可以更換圖片。 void CTcpseverDlg::OnPic() { static int index。 index++。 index=index%5。 CBitmap bitmap。 int bit[5]={IDB_BITMAP1,IDB_BITMAP2,IDB_BITMAP3,IDB_BITMAP4,IDB_BITMAP
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1