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

正文內(nèi)容

基于windows平臺(tái)的局域網(wǎng)聊天系統(tǒng)-預(yù)覽頁

2024-12-14 15:00 上一頁面

下一頁面
 

【正文】 ........................................................................................................ 24 結(jié) 論 ............................................................................................................................. 25 致 謝 ............................................................................................................................. 26 參考文獻(xiàn) ........................................................................................................................ 27 附錄 ……………………………………………………………………………………………… ..28 I 摘要 隨著計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的發(fā)展,各種各樣基于網(wǎng)絡(luò)的應(yīng)用也隨之誕生 ,比如基于互聯(lián)網(wǎng)的信息發(fā)布,通信,數(shù)據(jù)共享等等。所以本文提出了一個(gè)更加合理的設(shè)計(jì),并在 WINDOWS 平臺(tái)上加以了實(shí)現(xiàn) .用多線程實(shí)現(xiàn)不同的并行任務(wù)。出于高效、快速地處理各種事務(wù)的目的,越來越多的企業(yè)在其內(nèi)部使用局域網(wǎng)來進(jìn)行工作。 為了解決上述矛盾,人們提出了許多方法?;赟ocket 的 局域網(wǎng)通信軟件可以為企業(yè)原有的局域網(wǎng)提供一種良好,安全,快速的通信機(jī)制。 基于 Socket 的局域網(wǎng)通信軟件應(yīng)用范圍廣闊,不但可以處理傳統(tǒng)的通信需求,而且也能擴(kuò)展以適應(yīng)新型的網(wǎng)絡(luò)應(yīng)用,如網(wǎng)絡(luò)教育,數(shù)據(jù)影音傳輸?shù)龋瑩碛袕V泛的應(yīng)用前景。在局域網(wǎng)內(nèi) ,這些功能的實(shí)現(xiàn)跟廣域網(wǎng)相比更加簡單,因?yàn)榫钟蚓W(wǎng)的網(wǎng)絡(luò)結(jié)構(gòu)本身比廣域網(wǎng)要復(fù)雜,但是又可以借些理解網(wǎng)絡(luò)協(xié)議,以及網(wǎng)絡(luò)通信工具的實(shí)現(xiàn)原理,所以仍然極具研究價(jià)值。因此,在應(yīng)用時(shí)應(yīng)采用更好的配置。 (2) 軟件環(huán)境 選擇好的操作系統(tǒng)和好的編程語言是系統(tǒng)優(yōu)劣的關(guān)鍵,我們要求系統(tǒng)在盡可能多的環(huán)境下運(yùn)行,故 我 所 設(shè)計(jì)的該 聊天 系統(tǒng)適合在 Windows XP 平臺(tái) , Windows vista平臺(tái) 和 Windows 7 平臺(tái) 上使用。 WINDOWS SOCKETS 網(wǎng)絡(luò)編程接口概述 既然選定了 WINDOWS 平臺(tái),而又要開發(fā)網(wǎng)絡(luò)通信程序,所以可以選擇WINDOWS 的 SOCKETS 編程接口, Windows Sockets 是一套開放的、支持多種協(xié)議的 Windows 下的網(wǎng)絡(luò)編程接口。 2 需求分析及可行性研究 需求分析 : 時(shí)間要求 本項(xiàng)目作為大學(xué)本科畢業(yè)設(shè)計(jì)題目,從 2020 年 11 月 8 號(hào)接受選題開始,在 2020年 12 月 10 號(hào)之前完成系統(tǒng)設(shè)計(jì),編碼實(shí)現(xiàn)工作, 在 2020 年 12 月 20 號(hào)之 前 之前完成畢業(yè)設(shè)計(jì)論文初稿, 2020 年 5 月 1 號(hào)之前最終完成論文。在客戶端啟用以后,需要查看服務(wù)器端是否在線,服務(wù)器在線才能正常使用客戶端,如果服務(wù)器不在線,則 客戶端會(huì) 自動(dòng)退出 程序。 程序要有良好的容錯(cuò)性,當(dāng)用戶進(jìn)行非法操作時(shí)或者系統(tǒng)本身出現(xiàn)問題時(shí)要能以最好的方式退出程序,避 免發(fā)生程序假死現(xiàn)象。并且要求易于維護(hù)及擴(kuò)展。 ( 2)技術(shù)可行性分析 首先我已經(jīng)搭建好開發(fā)所需要的軟硬件平臺(tái),并進(jìn)行了合理而完善的需求分析,做好了充分的前期準(zhǔn)備工作,其次因?yàn)楸境绦虻钠脚_(tái)將基于 WINDOWS,將要使用網(wǎng)絡(luò)通信技術(shù),而 WINDOWS 有完善成熟的網(wǎng)絡(luò)通信接口,以及與 VC 開發(fā)環(huán)境的嚴(yán)密契合能力,加之相類似的更大規(guī)模的 INTERNET 通信工具產(chǎn)品也已有例在先,所以這個(gè)程序的開發(fā)可行性在技術(shù)上是完全可行的。下面是進(jìn)行直接的 WIN32 SDK 方式編程的基本思路或者說是一個(gè)框架: 一個(gè) WINDOWS 程序分為程序代碼和 UI(User Interface 用戶接口 )資源兩大部份,兩部份最后以 RC 編譯程序整合為一個(gè)完整的 EXE 文件。 RC 編譯器( )讀取 RC 文件的描述后將所有 UI 資源文件集中制作出一個(gè) .RES 文件,再與程序代碼結(jié)合在一起,這才是一個(gè)完整的 Windows 可執(zhí)行文件。msg)。這樣,一個(gè)基于消息事件驅(qū)動(dòng)的 WIN32 程序的雛形就建立了起來。 MFC 類庫包括: ( 1) CCmdTarget 類:是 CObject 類的子類,它是 MFC 庫中所有具有消息映射屬性的類的公共基類。應(yīng)用程序類 CWinApp 是 CWinThread 的子類,封裝了初始化、運(yùn)行、終止應(yīng)用程序的代碼。 ( 4)文檔類 CDocument 類:是 CCmdTarget 類的子類,負(fù)責(zé)封裝和維護(hù)文檔。使用其向?qū)б约翱丶幊?,使得不論是界面編寫,還是程序內(nèi)核設(shè)計(jì),都更加的簡單。應(yīng)用的示例: tel(遠(yuǎn)程登錄 )、 ftp(文件傳遞協(xié)議 )、 等。底層的水平線代表以太網(wǎng)網(wǎng)線, “O”代表收發(fā)器, “*”代表 IP 地址, “”代表網(wǎng)址,理解這樣的分層結(jié)構(gòu)是理解 INTERNET 技術(shù)的基礎(chǔ)。 IP 數(shù)據(jù)包中含有發(fā)送它的主機(jī)的地址(源地址)和接收它的主機(jī)的地址(目的地址)。本程序只應(yīng)用于局域網(wǎng)中,局域網(wǎng)中的數(shù)據(jù)流傳輸?shù)目煽啃愿撸蔬x擇 UDP 協(xié)議。在這個(gè)時(shí)刻,服務(wù)程序被 驚醒 并且為客戶提供服務(wù)-對客戶的請求作出適當(dāng)?shù)姆磻?yīng)。應(yīng)用程序在網(wǎng)絡(luò)上傳輸,接 收的信息都通過這個(gè) Socket接口來實(shí)現(xiàn)。 (2) : WINSOCK API 連接庫文件。 線程是進(jìn)程內(nèi)部的一個(gè)執(zhí)行單元。用戶根據(jù)需要在應(yīng)用程序中創(chuàng)建其它線程,多個(gè)線程并發(fā)地運(yùn)行于同一個(gè)進(jìn)程中。由此可見,如果兩個(gè)非?;钴S的線程為了搶奪對 CPU 的控制權(quán),在線程切換時(shí)會(huì)消耗很多的 CPU 資源,反而會(huì)降低系統(tǒng)的性能。 Win32 API 對多線程編程的支持 Win32 提供了一系列的 API 函數(shù)來完成線程的創(chuàng)建、掛起、 恢復(fù)、終結(jié)以及通信等工作。 (2) DWORD SuspendThread(HANDLE hThread)。 (4) VOID ExitThread(DWORD dwExitCode)。 一般情況下,線程運(yùn)行結(jié)束之后,線程函數(shù)正常返回,但是應(yīng)用程序可以調(diào)用TerminateThread 強(qiáng)行終止某一線程的執(zhí)行。 該函數(shù)將一條消息放入到指定線程的消息隊(duì)列中,并且不等到消息被該線程處理時(shí)便返回。Client/Server 結(jié)構(gòu)是當(dāng)前數(shù)據(jù)庫應(yīng)用程序中極為流行的一種方式。一個(gè)請求總是首先被客戶發(fā)出 ,然后服務(wù)器總是被動(dòng)地接收請求 ,返回客戶需要的結(jié)果。 然后客戶端向服務(wù)器發(fā)送 注冊信息或登錄信息,當(dāng)用戶成功登陸后,服務(wù)器會(huì)把這個(gè)用戶的信息發(fā)送到每一個(gè)目前在線的客戶端,讓 客戶端更新在線用戶列表 。 湖北經(jīng)濟(jì)學(xué)院本科畢業(yè)(設(shè)計(jì))論文 16 圖 42 功能模塊圖 其中主線程模塊完成對網(wǎng)絡(luò)的初始化,然后啟動(dòng)兩個(gè)子線程:服務(wù)端監(jiān)聽線程以及網(wǎng)絡(luò)掃描模塊線程,然后由網(wǎng)絡(luò)掃描模塊得到當(dāng)前的網(wǎng)絡(luò)用戶分布情況,并填充相關(guān)的數(shù)據(jù)結(jié)構(gòu),然后生成用戶列表界面顯示給用戶。 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì) ( 1)在線用戶信息結(jié)構(gòu)體: struct xinxi { SOCKET socket。 vectorstruct xinxiuserinfo。 注: 我是用容器來已經(jīng)注冊的用戶信息 。 }。 CservApp 類為應(yīng)用程序主框架類,它在后臺(tái)完成了一個(gè)基于 MFC 的應(yīng)用程序的所有基本的初始化工作,如果用戶需要在程序的初始化時(shí)加入一些自定義的操作,只需在其中的 InitInstance()函數(shù)中加入就可以了。接著將該套接字設(shè)置為阻塞模式 ,最后開始監(jiān)聽。在這次的畢業(yè)設(shè)計(jì)中,我應(yīng)用了VC++ 開發(fā)工具在 WINDOWS 平臺(tái)上開發(fā)了一個(gè)基于 WINDOWS 平臺(tái)的局域網(wǎng)通信工具,在這一重要的領(lǐng)域進(jìn)行了相關(guān) 的實(shí)踐,不管是對我的研究能力,還是實(shí)際動(dòng)手能力,還是資料查閱能力,都起了相當(dāng)大的益處。 既然設(shè)計(jì)已經(jīng)完成,論文也寫到結(jié)論的地方,我希望自己能以一個(gè)良好的心態(tài)順利畢業(yè),走向 社會(huì) 。 // standard constructor // Dialog Data //{{AFX_DATA(CServDlg) enum { IDD = IDD_SERV_DIALOG }。 afx_msg void OnSysCommand(UINT nID, LPARAM lParam)。 afx_msg void OnBUTTONclose()。 //{{AFX_INSERT_LOCATION}} // Microsoft Visual C++ will insert additional declarations immediately before the previous line. endif // !defined(AFX_SERVDLG_H__4695A1C6_184A_41EF_AC29_AA307A63D654__INCLUDED_) 2. : implementation file include include include include pragma ment(lib,) include vector using namespace std。 }。 HANDLE thread1。//存放編輯框中顯示的內(nèi)容 vectorstruct xinxiuserinfo。 DWORD WINAPI thread_pandu(LPVOID lparam)。 //向客戶端發(fā)送在線用戶的用戶名 ///////////////////////////////////////////////////////////////////////////// // CAboutDlg dialog used for App About class CAboutDlg : public CDialog { public: CAboutDlg()。 CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD) { 湖北經(jīng)濟(jì)學(xué)院本科畢業(yè)(設(shè)計(jì))論文 31 //{{AFX_DATA_INIT(CAboutDlg) //}}AFX_DATA_INIT } void CAboutDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX)。 //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CServDlg, CDialog) //{{AFX_MSG_MAP(CServDlg) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_BN_CLICKED(IDC_BUTTON_open, OnBUTTONopen) ON_BN_CLICKED(IDC_BUTTON_close, OnBUTTONclose) 湖北經(jīng)濟(jì)學(xué)院本科畢業(yè)(設(shè)計(jì))論文 32 //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CServDlg message handlers BOOL CServDlg::OnInitDialog() { CDialog::OnInitDialog()。 CMenu* pSysMenu = GetSystemMenu(FALSE)。 pSysMenuAppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu)。 // Set small icon openflag=false。 湖北經(jīng)濟(jì)學(xué)院本科畢業(yè)(設(shè)計(jì))論文 33 ()。 // Center icon in client rectangle int cxIcon = GetSystemMetrics(SM_CXICON)。rect)。 } else { CDialog::OnPaint()。 if(banbenjiance()==false) { MessageBox(版本升級(jí)出錯(cuò)! )。 CString str。 =AF_INET。serv_addr,sizeof(SOCKADDR))==SOCKET_ERROR) { int error=WSAGetLastError()。 } if(list
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1