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

正文內(nèi)容

c++語(yǔ)言解決局域網(wǎng)聊天系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)(文件)

 

【正文】 _INET,SOCK_STREAM,0)。 return false。 } bool CServerDlg::InitSocket() { WSADATA wsaData。 int y = (() cyIcon + 1) / 2。 CRect rect。 } } // If you add a minimize button to your dialog, you will need the code below // to draw the icon. For MFC applications using the document/view model, // this is automatically done for you by the framework. void CServerDlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this)。 // return TRUE unless you set the focus to a control } void CServerDlg::OnSysCommand(UINT nID, LPARAM lParam) { if ((nID amp。 CServerDlg::OnCancel()。 } } // Set the icon for this dialog. The framework does this automatically // when the application39。 if (pSysMenu != NULL) { 《 用 VC++語(yǔ)言解決局域網(wǎng)聊天系統(tǒng)的 設(shè)計(jì)與 實(shí)現(xiàn) 》 第 31 頁(yè) 共 62 頁(yè) CString strAboutMenu。 // Add About... menu item to system menu. // IDM_ABOUTBOX must be in the system mand range. ASSERT((IDM_ABOUTBOX amp。 //}}AFX_DATA_INIT // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()LoadIcon(IDR_MAINFRAME)。 //}}AFX_DATA // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CAboutDlg) protected: virtual void DoDataExchange(CDataExchange* pDX)。其次要感謝 長(zhǎng)沙理工大學(xué) 的老師們,是他們 在課程設(shè)計(jì) 中為我準(zhǔn)備好了 課程設(shè)計(jì) 的工作環(huán)境,在 調(diào)試程序的 整個(gè)過(guò)程中給予了我指導(dǎo),再次是要感謝和我一起做 課程設(shè)計(jì) 的同學(xué)們,正是有了他們,我們才在遇到問(wèn)題時(shí),相互鼓勵(lì),最終解決了問(wèn)題,圓滿地完成了 課程設(shè)計(jì) 的各項(xiàng)工 作 。所以,我決定認(rèn)真總結(jié)這次 課程設(shè)計(jì) 的經(jīng)驗(yàn),以及學(xué)習(xí)到的知識(shí),來(lái)更加的充實(shí)自己的頭腦和完善自己的知識(shí)結(jié)構(gòu)。 6 測(cè) 試 用二臺(tái)機(jī)器通過(guò)集線器構(gòu)成一個(gè)局域網(wǎng),進(jìn)行正確的網(wǎng)絡(luò)配置,二 臺(tái)機(jī)器上都安裝了 WINDOWS 操作系統(tǒng), 經(jīng)過(guò)測(cè)試可正常運(yùn)行。密 語(yǔ)s t r T o = = _ T ( )n e t M e s s a g e . t y p e = P T C _ W H I S P E R I N G 。 以上即各個(gè)模塊的詳細(xì)設(shè)計(jì)的主要實(shí)現(xiàn)過(guò)程。連接有可能是成功的,也有可能是失敗的,可以通過(guò)對(duì) OnConnect()調(diào)用中的參數(shù)來(lái)判斷。 OnReceive:通知套接字在緩沖區(qū)中有數(shù)據(jù),在事件響應(yīng)代碼中可以通過(guò)調(diào)用Receive()成員函數(shù)來(lái)取得其中的數(shù)據(jù)。圖 53描述了使用 WinSock API 進(jìn)行流式連接的套接字。隨后立刻向數(shù)據(jù)的發(fā)送者進(jìn)行回復(fù)。 客戶端應(yīng)用程序 服務(wù)器端應(yīng)用程序 Socket() recvfrom() Sendto() Socket() bind() recvfrom() Sendto() 《 用 VC++語(yǔ)言解決局域網(wǎng)聊天系統(tǒng)的 設(shè)計(jì)與 實(shí)現(xiàn) 》 第 22 頁(yè) 共 62 頁(yè) 圖 52 使用數(shù)據(jù)報(bào)套接字 首先,客戶端和服務(wù)器端都創(chuàng)建一個(gè)數(shù)據(jù)報(bào),接著服務(wù)器端調(diào)用 bind()函數(shù)給套接字指定一個(gè)端口。 服務(wù)端線程的具體作就是首先創(chuàng)建一個(gè) SOCKETS,然后將該套接字綁定到本地主機(jī)的某一個(gè)固定的端口上,在本程序中選擇了 3127 端口。代碼為: if (!AfxSocketInit()) { AfxMessageBox(IDP_SOCKETS_INIT_FAILED)。 用戶界面設(shè)計(jì) 在能夠完全滿足軟件所需功能,設(shè)計(jì)界面要清爽、操作要簡(jiǎn)單易懂的基本原則下,本軟件的界面設(shè)計(jì)如下: 服務(wù)器端顯示界面: 圖 43服務(wù)器端界面圖 客戶端顯示界面: 《 用 VC++語(yǔ)言解決局域網(wǎng)聊天系統(tǒng)的 設(shè)計(jì)與 實(shí)現(xiàn) 》 第 20 頁(yè) 共 62 頁(yè) 圖 44 客戶端顯示界面 5 詳細(xì)設(shè)計(jì)及編碼實(shí)現(xiàn) 主框架及用戶界面模塊詳細(xì)設(shè)計(jì) 主框架模塊由兩個(gè)類構(gòu)成: CserverDlg 類 和 CserverApp 類。 //存儲(chǔ)窗口句柄 BOOL endtread。 //存儲(chǔ)接口套接字 HWND hwnd。 //用于判斷次 IP 是否更新過(guò),未更新則從單向鏈表中刪除 USERINFO *next。 輸入 /輸出模塊用來(lái)響應(yīng)用戶雙擊用戶列表的某一項(xiàng)要準(zhǔn)備發(fā)送信息時(shí)的消息,以及當(dāng)系統(tǒng)接收到某個(gè)網(wǎng)絡(luò)用戶發(fā)送來(lái)的消息,要將其顯示給用戶的時(shí)候。如果服務(wù)器不在線,則客戶端會(huì)提示用戶退出,在一定的時(shí)間后自動(dòng)退出。在客戶發(fā)出一個(gè)請(qǐng)求之前 ,服務(wù)進(jìn)程一直處于休眠狀態(tài)。尤其是網(wǎng)絡(luò)技術(shù)的發(fā)展 ,使得當(dāng)前很多系統(tǒng)都采用這種方式進(jìn)行構(gòu)造 ,其最大的優(yōu)點(diǎn)是將計(jì)算機(jī)工作任務(wù)分別由客戶端和服務(wù)器端來(lái)共同完成 ,這樣有利于充分合理的 利用系統(tǒng)資源。 調(diào)用該函數(shù)時(shí),如果即將接收消息的線程沒(méi)有創(chuàng)建消息循環(huán),則該函數(shù)執(zhí)行失敗。 使用 TerminateThread()終止某個(gè)線程的執(zhí)行是不安全的,可能會(huì)引起系統(tǒng)不穩(wěn)定;雖然該函數(shù)立即終止線程的執(zhí)行,但并不釋放線程所占用的資源。 《 用 VC++語(yǔ)言解決局域網(wǎng)聊天系統(tǒng)的 設(shè)計(jì)與 實(shí)現(xiàn) 》 第 16 頁(yè) 共 62 頁(yè) 該函數(shù)用于線程終結(jié)自身的執(zhí)行,主要在線程的執(zhí)行函數(shù)中被調(diào)用。 該函數(shù)用于掛起指定的線程,如果函數(shù)執(zhí)行成功,則線程的執(zhí)行被終止。下面將選取其中的一些重要函數(shù)進(jìn)行說(shuō)明。這一點(diǎn)在多線程編程時(shí)應(yīng)該注意。一個(gè)進(jìn)程中的所有線程都在該進(jìn)程的虛擬地址空間中,共同使用這些虛擬地址空間、全局變量和系統(tǒng)資源,所以線程間的通訊非常方便,多線程技術(shù)的應(yīng)用也較為廣泛。系統(tǒng)創(chuàng)建好進(jìn)程后,實(shí)際上就啟動(dòng)執(zhí)行了該進(jìn)程的主執(zhí)行線程,主執(zhí)行線程以函數(shù)地址形式,比如說(shuō) main 或 WinMain 函數(shù),將程序的啟動(dòng)點(diǎn)提供給 Windows 系統(tǒng)。 (3) : WINSOCK 的動(dòng)態(tài)連接庫(kù),位于 WINDOWS 的安裝目錄下。如下圖所示: 《 用 VC++語(yǔ)言解決局域網(wǎng)聊天系統(tǒng)的 設(shè)計(jì)與 實(shí)現(xiàn) 》 第 14 頁(yè) 共 62 頁(yè) 圖 34 面向連接的套接字的系統(tǒng)調(diào)用圖 微軟為 Visual C++定義了 Winsock類如 CAsyncSocket類和派生于 CAsyncSocket 的CSocket 類,它們簡(jiǎn)單易用,我們當(dāng)然可以使用這些類來(lái)實(shí)現(xiàn)自己的網(wǎng)絡(luò)程序,但是為了更好的了解 Winsock API編程技術(shù),本設(shè)計(jì)中將使用底層的 API函數(shù)實(shí)現(xiàn) Winsock 平臺(tái)的即時(shí)通信工具。 為了方便這種 Client/Server 模型的網(wǎng)絡(luò)編程, 90 年代初,由 Microsoft 聯(lián)合了其他幾家公司共同制定了一套 WINDOWS 下的網(wǎng)絡(luò)編程接口,即 Windows Sockets 規(guī)范,它不是一種網(wǎng)絡(luò)協(xié)議 ,而是一套開(kāi)放的、支持多種協(xié)議的 Windows 下的網(wǎng)絡(luò)編程接口。 WINDOWS SOCKETS 網(wǎng)絡(luò)編程接口概述 在網(wǎng)絡(luò)編程中最常用的方案便是 Client/Server (客戶機(jī) /服務(wù)器 )模型。 UDP( IP 協(xié)議號(hào) 17)是一個(gè) 無(wú)連接的 數(shù)據(jù)報(bào)協(xié)議。 (3)本 課程設(shè)計(jì) 涉及到的協(xié)議: IP、 TCP IP( Inter Protocol)是 TCP/IP 的心臟,也是網(wǎng)絡(luò)層中最重要的協(xié)議。 ( 2)邏輯結(jié)構(gòu): 圖 33 邏輯結(jié)構(gòu) 《 用 VC++語(yǔ)言解決局域網(wǎng)聊天系統(tǒng)的 設(shè)計(jì)與 實(shí)現(xiàn) 》 第 13 頁(yè) 共 62 頁(yè) 這是 TCP/IP 協(xié)議的分層結(jié)構(gòu)在互連網(wǎng)計(jì)算機(jī)上的表示,用互連網(wǎng)技術(shù)互相通信的每臺(tái)計(jì)算機(jī)都 有這樣的分層結(jié)構(gòu)。其中有合理的消息映射機(jī)制,有方便的運(yùn)行時(shí)類型識(shí)別功能,更有文檔 /視圖結(jié)構(gòu)設(shè)計(jì),文檔串行化功能等非常多的優(yōu)秀功能。文檔包括應(yīng)用程序的工作成果或環(huán)境設(shè)置數(shù)據(jù)等,可以是程序需要保存的任何內(nèi)容。 ( 3) CWnd 類:窗口類,是 CcmdTarget 類的子類,從 CWnd 派生的類可以擁有自己的窗口,并對(duì)它進(jìn)行控制。它的子類有 CWinThread 類, CWnd 類、 CDocument 類,從 CCndTarget 類派生的類能在程序 運(yùn)行時(shí)動(dòng)態(tài)創(chuàng)建對(duì)象,并處理命令消息。 MFC 框架 由上面的介紹可以看出,直接用 API 函數(shù)開(kāi)發(fā)一個(gè) WIN32 程序是相當(dāng)麻煩的,有好多既定的重復(fù)性的工作要做,所以微軟就用 C++的類機(jī)制將絕大部分的 API 函數(shù)進(jìn)行了封裝,構(gòu)成了類,并且將基本的流程也封裝在類機(jī)制下面,大大簡(jiǎn)化了 WIN32 開(kāi)的的復(fù)雜性,尤其是在開(kāi)發(fā)比較大型程序的時(shí)候這個(gè)便宜性更會(huì)得以體現(xiàn)。 DispatchMessage(amp。 與控制臺(tái)程序相同的是,一個(gè) WIN32 程序也必須有一個(gè)程序入口點(diǎn),但是在這兒它不再叫 main(),而叫做 WinMain(),當(dāng) WINDOWS的 SHELL檢測(cè)到用戶欲執(zhí)行一個(gè) EXE程序,就會(huì)調(diào)用加載器把程序進(jìn)行加載,然后調(diào)用 C startup code,后者再調(diào)用 WinMain(),程序的執(zhí)行就開(kāi)始了, WinMain()函數(shù)的原型為: int CALLBACK WinMain( HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow); 《 用 VC++語(yǔ)言解決局域網(wǎng)聊天系統(tǒng)的 設(shè)計(jì)與 實(shí)現(xiàn) 》 第 10 頁(yè) 共 62 頁(yè) 圖 31 32 位 WINDOWS 程序的開(kāi)發(fā)流程 下面程序必須進(jìn)行必要的初始化工作-產(chǎn)生窗口,第一步是注冊(cè)一個(gè)窗口類:用API 函數(shù): RegisterClass(),而這個(gè)函數(shù)需要一個(gè)已經(jīng)定義好的系統(tǒng)結(jié)構(gòu): WNDCLASS,這個(gè)結(jié)構(gòu)里面定義了窗口的種種屬性,需要自己定義,但是許多屬性都有默認(rèn)值。所謂 UI 資源是指功能菜單、對(duì)話框、程序圖標(biāo)、光標(biāo)形狀等等東西。 3 相關(guān)開(kāi)發(fā)技術(shù)的原理性說(shuō)明 win32 編程原理及 MFC框架 WIN32 編程原理 所謂的 Win32 開(kāi)發(fā),就是在 C 語(yǔ)言的層面上,直接使用 Win32 API 開(kāi)發(fā) Windows應(yīng)用程序或者系統(tǒng)程序。所以應(yīng)該采用模塊化開(kāi)發(fā),各個(gè)模塊之間不要有太多的聯(lián)系,以免 維護(hù)困難。 開(kāi)發(fā)文檔要有好的易理解性,如果系統(tǒng)又要交由別人接手開(kāi)發(fā),或者自己由于種種原因需要進(jìn)行二次開(kāi)發(fā),那么要保證以后能夠清晰的理解整個(gè)系統(tǒng)的設(shè)計(jì)思路以及實(shí)現(xiàn)細(xì)節(jié)。在使用過(guò)程中,客戶端在指定時(shí)間內(nèi)未向服務(wù)器端發(fā)送信息的,服務(wù)器認(rèn)為客戶端下線;客戶端在一定時(shí)間內(nèi)未收到服務(wù)器端信息的,認(rèn)為服務(wù)器已經(jīng)下線,則提示用戶并建議退出,在用戶一定時(shí)間后沒(méi)有退出的則自動(dòng)關(guān)閉客戶端程序。 2 需求分析及可行性研究 需求分析: 時(shí)間要求 本項(xiàng)目作為大學(xué) 課程設(shè)計(jì) 題目,從 6 月 26 號(hào)接受選題開(kāi)始,在 7 月 2 號(hào)之前完成系統(tǒng)設(shè)計(jì),編碼實(shí)現(xiàn)工作,在 7 月 5 號(hào)之前完成 課程設(shè)計(jì) 論文初稿, 7 月 9 號(hào)之前最終完成 課程設(shè)計(jì) 。 WINDOWS SOCKETS 網(wǎng)絡(luò)編程接口概述 既然選定了 WINDOWS 平臺(tái),而又要開(kāi)發(fā)網(wǎng)絡(luò)通信程序,所以可以選擇 WINDOWS的 SOCKETS 編程接口, Windows Sockets 是一套開(kāi)放的、支持多種協(xié)議的 Windows 下的網(wǎng)絡(luò)編程接口。因 具 有友好的
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1