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

正文內(nèi)容

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

2024-12-03 17:57本頁面

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

  

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