畢業(yè)設(shè)計(jì)c++基于socket的網(wǎng)絡(luò)聊天室_第1頁
畢業(yè)設(shè)計(jì)c++基于socket的網(wǎng)絡(luò)聊天室_第2頁
畢業(yè)設(shè)計(jì)c++基于socket的網(wǎng)絡(luò)聊天室_第3頁
畢業(yè)設(shè)計(jì)c++基于socket的網(wǎng)絡(luò)聊天室_第4頁
畢業(yè)設(shè)計(jì)c++基于socket的網(wǎng)絡(luò)聊天室_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、成都理工大學(xué)工程技術(shù)學(xué)院畢業(yè)論文基于socket的網(wǎng)絡(luò)聊天室作者姓名:陳 聰 專業(yè)名稱:計(jì)算機(jī)科學(xué)與技術(shù)指導(dǎo)教師:柳 軍 講師基于socket的網(wǎng)絡(luò)聊天室摘要八十年代初,美國政府的高級(jí)研究工程機(jī)構(gòu)(arpa)給加利福尼亞大學(xué)berkeley分校提供了資金,讓他們?cè)趗nix操作系統(tǒng)下實(shí)現(xiàn)tcp/ip協(xié)議。在這個(gè)項(xiàng)目中,研究人員為tcp/ip網(wǎng)絡(luò)通信開發(fā)了一個(gè)api(應(yīng)用程序接口)。這個(gè)api稱為socket接口(套接字)今天,socket接口是tcp/ip網(wǎng)絡(luò)最為通用的api,也是在internet上進(jìn)行應(yīng)用開發(fā)最為通用的api.。winsock 是在windows進(jìn)行網(wǎng)絡(luò)通信編程的api接口,

2、也是windows網(wǎng)絡(luò)編程的事實(shí)標(biāo)準(zhǔn)。在網(wǎng)絡(luò)編程中最常用的方案便是客戶機(jī)/服務(wù)器模型(c/s)。本文提出了在客戶機(jī)/服務(wù)器模型下用winsock實(shí)現(xiàn)的聊天室軟件的方案。隨著網(wǎng)絡(luò)技術(shù)的發(fā)展及人們生活的需求,網(wǎng)絡(luò)聊天已越來越受到人們的親睞 。本課題是開發(fā)一個(gè)基于tcp的局域網(wǎng)聊天室系統(tǒng),采用軟件工程的方法,綜合運(yùn)用數(shù)據(jù)庫技術(shù)、程序設(shè)計(jì)技術(shù)、網(wǎng)絡(luò)技術(shù)。研究的主要內(nèi)容是如何利用tcp套接字編寫網(wǎng)絡(luò)聊天程序,主要完成了客戶端的號(hào)碼注冊(cè),發(fā)送信息與顯示在線用戶及服務(wù)器端的廣播信息,管理用戶數(shù)據(jù)庫與在線用戶顯示等工作.通過聊天工具的使用,讓分布在不同地點(diǎn)、使用不同機(jī)器的一組用戶能夠及時(shí)進(jìn)行信息交流.達(dá)到信息

3、共享的目的.從而提高工作或者生活效率??紤]到對(duì)用戶的管理及安全性問題,增加了管理數(shù)據(jù)庫功能。適用于局域網(wǎng)使用的網(wǎng)絡(luò)聊天工具,其操作簡單,靈活性好,運(yùn)行也比較穩(wěn)定。關(guān)鍵字 :c/s 套接字 tcpabstractthe early 80s, the u.s. government's advanced research project agency (arpa) to the university of california, berkeley provided funding to enable them to achieve in the unix operating system,

4、 tcp / ip protocol. in this project, researchers for the tcp / ip network communication development an api (application program interface). this api is called socket interface (socket). today, socket interface is a tcp / ip network of the most common api, is the internet application development on t

5、he most common api.winsock network communication in the windows api programming interface, is the de facto standard windows network programming. in network programming is the most commonly used program client / server model. in this paper, the client / server model implemented using winsock chat roo

6、m software program.with the development of networking technology and the living demand of people,chating on network is more and more acceptable by people .this topic is going to talk about that to develop the local area internet chatroom system which based on udp , it adopts the method of software e

7、ngineer ,and uses the technology of database , process design and network synthetichy .the prinary content of researching is how to use the udp sleeve to joint the procedure of compiling the network chat, it is main to finish the task of the numbers application of clients, transmiting the message,di

8、splaying the online users and the servers broadcast message, and managing users database and the displaying of online users.through the using of chating tool,it can make a group of users who distribute in different place ,and use different machine to communicate with senting messages timely,then ach

9、ieved the goal of information sharing, and inprove the efficiency of work or living .to consider the managing and secure problem to users , it increases the function of managing database,.it adapts to use the network chating tool in local internet ,its operation is simple , the flexibility is good a

10、nd movement is also guite stablekeywords: c/s, socket, tcp- ii -基于socket的網(wǎng)絡(luò)聊天室目錄摘要iabstractii目錄iii前言11 開發(fā)環(huán)境介紹21.1 visual c+可視化集成開發(fā)環(huán)境簡介21.2 vc+ mfc編程21.2.1 mfc類庫概念和組成31.2.2 mfc的優(yōu)點(diǎn)31.3 winsock網(wǎng)絡(luò)編程41.3.1 socket41.3.2開發(fā)windows sockets網(wǎng)絡(luò)通信程序的軟、硬件環(huán)境51.3.3 csocket類編程模型61.3.4 用vc6.0進(jìn)行windows sockets程序開發(fā)的技術(shù)要

11、點(diǎn)62 microsoft access概述82.1 microsoft access的發(fā)展82.2 microsoft access的主要用途82.3本系統(tǒng)的數(shù)據(jù)庫設(shè)計(jì)93 odbc原理及其mfc編程103.1 odbc概述103.2 odbc接口的工作原理113.3 odbc數(shù)據(jù)源的創(chuàng)建及連接113.4 mfc 的odbc編程124 需求分析144.1 開發(fā)平臺(tái)144.2 網(wǎng)絡(luò)聊天室的流程及模型圖144.2.1 流程圖144.2.2 系統(tǒng)數(shù)據(jù)模型(e-r圖)154.3 網(wǎng)絡(luò)聊天室的主要實(shí)現(xiàn)154.3.1 登陸以及身份確認(rèn)(密碼驗(yàn)證)功能的實(shí)現(xiàn):154.3.2 客服端聊天功能實(shí)現(xiàn)204.3.

12、3 服務(wù)器端功能實(shí)現(xiàn)225 系統(tǒng)實(shí)現(xiàn)245.1對(duì)所有的用戶發(fā)送誰進(jìn)入了聊天室及頭像的加載245.2 服務(wù)器自定義消息處理函數(shù)25總結(jié)31致謝32參考文獻(xiàn)33-33-前言隨著網(wǎng)絡(luò)技術(shù)的普及,計(jì)算機(jī)應(yīng)用正從傳統(tǒng)的單用戶工作模式向多用戶信息交流共享工作的方向發(fā)展。在工作過程中,多個(gè)用戶交流信息即需要使多臺(tái)機(jī)器能夠聯(lián)網(wǎng)并能交流數(shù)據(jù),這樣就必須要有個(gè)大家都認(rèn)同的方式來實(shí)現(xiàn)這個(gè)目的,這時(shí)就需選擇已經(jīng)開發(fā)的tcp協(xié)議,在這個(gè)協(xié)議中,定義一個(gè)套接字(socket)來幫助用戶完成通信,套接字(socket)最初是由加利福尼亞大學(xué)berkeley分校為unix操作系統(tǒng)開發(fā)的網(wǎng)絡(luò)通信接口,隨著unix操作系統(tǒng)的廣泛

13、使用,套接字成為當(dāng)前最流行的網(wǎng)絡(luò)通信應(yīng)用程序接口之一。九十年代初,由sun microsystems,jsb corporation,ftp software,microdyne和microsoft等幾家公司共同制定了一套標(biāo)準(zhǔn),即windows sockets規(guī)范。本設(shè)計(jì)是建立在套接字(socket)的基礎(chǔ)上的。局域網(wǎng)聊天室系統(tǒng)設(shè)計(jì)可以劃分為三個(gè)子系統(tǒng):服務(wù)器管理員登陸,開啟服務(wù)器及廣播信息子系統(tǒng)、客戶端用戶申請(qǐng)賬號(hào)子系統(tǒng)、客戶端用戶聊天子系統(tǒng)??蛻舳擞脩袅奶熳酉到y(tǒng)是客戶端程序的重要組成部分,要能正常的發(fā)送信息功能。能申請(qǐng)賬號(hào)、能顯示在線用戶、能給任意在線用戶發(fā)送信息等,服務(wù)器端管理員能夠登陸

14、而使服務(wù)器具有安全性、服務(wù)器端能夠廣播信息而通知大家重要信息、服務(wù)器能夠管理用戶。本論文主要講敘了基于vc+的client/server模式的開發(fā)。不足之處本系統(tǒng)只能用于小型的網(wǎng)絡(luò)中,比方說在一個(gè)辦公室、一個(gè)公司、一個(gè)居民小區(qū)等地方使用。1 開發(fā)環(huán)境介紹1.1 visual c+可視化集成開發(fā)環(huán)境簡介visual c+是一個(gè)功能強(qiáng)大的可視化軟件開發(fā)工具。自1993年microsoft公司推出visual c+1.0后,隨著其新版本的不斷問世,visual c+已成為專業(yè)程序員進(jìn)行軟件開發(fā)的首選工具。 雖然微軟公司推出了visual c+.net(visual c+7.0),但它的應(yīng)用的很大的局

15、限性,只適用于windows 2000,windows xp和windows nt4.0。所以實(shí)際中,更多的是以visual c+6.0為平臺(tái)。visual c+6.0不僅是一個(gè)c+編譯器,而且是一個(gè)基于windows操作系統(tǒng)的可視化集成開發(fā)環(huán)境(integrated development environment,ide)。visual c+6.0由許多組件組成,包括編輯器、調(diào)試器以及程序向?qū)ppwizard、類向?qū)lass wizard等開發(fā)工具。 這些組件通過一個(gè)名為developer studio的組件集成為和諧的開發(fā)環(huán)境?,F(xiàn)在最新版本是vc 2010 ,對(duì)c+標(biāo)準(zhǔn)支持的最好1.2

16、 vc+ mfc編程在微軟基礎(chǔ)類庫(mfc:microsoft foundation class)是微軟為windows程序員提供的一個(gè)面向?qū)ο蟮膚indows編程接口,它大大簡化了windows編程工作。使用mfc類庫的好處是:首先,mfc提供了一個(gè)標(biāo)準(zhǔn)化的結(jié)構(gòu),這樣開發(fā)人員不必從頭設(shè)計(jì)創(chuàng)建和管理一個(gè)標(biāo)準(zhǔn)windows應(yīng)用程序所需的程序,而是“站在巨人肩膀上”,從一個(gè)比較高的起點(diǎn)編程,故節(jié)省了大量的時(shí)間;其次,它提供了大量的代碼,指導(dǎo)用戶編程時(shí)實(shí)現(xiàn)某些技術(shù)和功能。mfc庫充分利用了microsoft開發(fā)人員多年開發(fā)windows程序的經(jīng)驗(yàn),并可以將這些經(jīng)驗(yàn)融入到你自己開發(fā)的應(yīng)用程序中去。對(duì)用

17、戶來說,用mfc開發(fā)的最終應(yīng)用程序具有標(biāo)準(zhǔn)的、熟悉的windows界面,這樣的應(yīng)用程序易學(xué)易用;另外,新的應(yīng)用程序還能立即支持所有標(biāo)準(zhǔn)windows特性,而且是用普通的、明確定義的形式。事實(shí)上,也就是在windows應(yīng)用程序界面基礎(chǔ)上定義了一種新的標(biāo)準(zhǔn)mfc標(biāo)準(zhǔn)。為了更好的理解mfc,我們有必要了解一下mfc的歷史。1.2.1 mfc類庫概念和組成類庫是一個(gè)可以在應(yīng)用中使用的相互關(guān)聯(lián)的c+類的集合。類庫有些隨編譯器提供,如borland c+ turbo vision等;有的是由其他軟件公司銷售,如用于數(shù)據(jù)庫開發(fā)的codebase;有的則是由用戶自己開發(fā)的。比如圖象處理類庫完成圖象顯示、格式轉(zhuǎn)

18、換、量化等;串行通信類庫用于支持串行口輸入輸出。有些情況下用戶可以直接利用類庫中包含的類定義應(yīng)用程序所需的變量,有時(shí)則需要從類庫所提供的類中派生出新的類,這依賴于類庫的設(shè)計(jì)和具體的應(yīng)用程序。microsoft提供了一個(gè)基礎(chǔ)類庫mfc,其中包含用來開發(fā)c+和c+ windows應(yīng)用程序的一組類。基礎(chǔ)類庫的核心是以c+形式封裝了大部分的windows api。類庫表示窗口、對(duì)話框、設(shè)備上下文、公共gdi對(duì)象如畫筆、調(diào)色板、控制框和其他標(biāo)準(zhǔn)的windows部件。這些類提供了一個(gè)面向windows中結(jié)構(gòu)的簡單的c+成員函數(shù)的接口。mfc可分為兩個(gè)主要部分:(1)基礎(chǔ)類(2)宏和全程函數(shù)。1.2.2 m

19、fc的優(yōu)點(diǎn)microsoft mfc具有以下不同于其它類庫的優(yōu)勢:1.完全支持windows所有的函數(shù)、控件、消息、gdi基本圖形函數(shù),菜單及對(duì)話框。類的設(shè)計(jì)以及同api函數(shù)的結(jié)合相當(dāng)合理。2.使用與傳統(tǒng)的windows api同樣的命名規(guī)則,即匈牙利命名法。3.進(jìn)行消息處理時(shí),不使用易產(chǎn)生錯(cuò)誤的switch/case語句,所有消息映射到類的成員函數(shù),這種直接消息到方法的映射對(duì)所有的消息都適用。它通過宏來實(shí)現(xiàn)消息到成員函數(shù)的映射,而且這些函數(shù)不必是虛擬的成員函數(shù),這樣不需要為消息映射函數(shù)生成一個(gè)很大的虛擬函數(shù)表(v表),節(jié)省內(nèi)存。4.通過發(fā)送有關(guān)對(duì)象信息到文件的能力提供更好的判定支持,也可確認(rèn)

20、成員變量。5.支持異常錯(cuò)誤的處理,減少了程序出錯(cuò)的機(jī)會(huì)6.運(yùn)行時(shí)確定數(shù)據(jù)對(duì)象的類型。這允許實(shí)例化時(shí)動(dòng)態(tài)操作各域7.有較少的代碼和較快的速度。mfc庫只增加了少于40k的目標(biāo)代碼,效率只比傳統(tǒng)的c windows程序低5%。8.可以利用與mfc緊密結(jié)合的appwizard和classwizard等工具快速開發(fā)出功能強(qiáng)大的應(yīng)用程序。9.另外,在使用mfc時(shí)還允許混合使用傳統(tǒng)的函數(shù)調(diào)用。1.3 winsock網(wǎng)絡(luò)編程windows sockets 是從 berkeley sockets 擴(kuò)展而來的,其在繼承 berkeley sockets 的基礎(chǔ)上,又進(jìn)行了新的擴(kuò)充。這些擴(kuò)充主要是提供了一些異步函

21、數(shù),并增加了符合windows消息驅(qū)動(dòng)特性的網(wǎng)絡(luò)事件異步選擇機(jī)制。windows sockets由兩部分組成:開發(fā)組件和運(yùn)行組件。開發(fā)組件:windows sockets 實(shí)現(xiàn)文檔、應(yīng)用程序接口(api)引入庫和一些頭文件。運(yùn)行組件:windows sockets 應(yīng)用程序接口的動(dòng)態(tài)鏈接庫(winsock.dll)。1.3.1 socket套接字(socket)最初是由加利福尼亞大學(xué)berkeley分校為unix操作系統(tǒng)開發(fā)的網(wǎng)絡(luò)通信接口,隨著unix操作系統(tǒng)的廣泛使用,套接字成為當(dāng)前最流行的網(wǎng)絡(luò)通信應(yīng)用程序接口之一。90年代初,由sun microsystems,jsb corporatio

22、n,ftp software,microdyne和microsoft等幾家公司共同制定了一套標(biāo)準(zhǔn),即windows sockets規(guī)范。 windows sockets api是microsoft windows的網(wǎng)絡(luò)程序設(shè)計(jì)接口,它在繼承了berkeley sockets主要特征的基礎(chǔ)上,又對(duì)它進(jìn)行了重要擴(kuò)充。這些擴(kuò)充主要是提供了一些異步函數(shù),并增加了符合windows消息驅(qū)動(dòng)特性的網(wǎng)絡(luò)事件異步選擇機(jī)制 。這些擴(kuò)充有利于應(yīng)用程序開發(fā)者編制符合windows編程模式的軟件,它使在windows下開發(fā)高性能的網(wǎng)絡(luò)通信程序成為可能。 socket實(shí)際上是指一個(gè)通信端點(diǎn),借助于它,用戶所開發(fā)的soc

23、ket應(yīng)用程序,可以通過網(wǎng)絡(luò)與其它socket應(yīng)用程序進(jìn)行通信。 近年來,隨著計(jì)算機(jī)網(wǎng)絡(luò)與windows 95的流行,許多用戶所開發(fā)的應(yīng)用程序需要實(shí)現(xiàn)網(wǎng)絡(luò)間的數(shù)據(jù)通信。1.3.2開發(fā)windows sockets網(wǎng)絡(luò)通信程序的軟、硬件環(huán)境所采用的操作系統(tǒng)軟件可以是windows 95,2000,xp,也可以是windows nt,因?yàn)樗鼈兌贾С謜indows sockets api,在以下的介紹中,我們將以在windows xp環(huán)境下的開發(fā)為例。 所采用的編程語言一般可選目前較流行使用的可視化和采用面向?qū)ο蠹夹g(shù)的microsoft visual c+ 6.0。visual c+ 6.0可在wi

24、ndows xp或windows nt環(huán)境下運(yùn)行,其開發(fā)系統(tǒng)增加了全面集成的基于windows 的開發(fā)工具以及一個(gè)基于傳統(tǒng)c/c+開發(fā)過程的“可視化”用戶界面驅(qū)動(dòng)模型。visual c+ 6.0中的microsoft基類(mfc,即microsoft foundation class)庫是一系列c+類,其中封裝著為microsoft windows操作系統(tǒng)系列編寫應(yīng)用程序的各種功能 。在有關(guān)套接字方面,visual c+ 6.0對(duì)原來的windows sockets庫函數(shù)進(jìn)行了一系列封裝,繼而產(chǎn)生了csocket 、csocketfile等類,它們封裝著有關(guān)socket的各種功能。 所采用的網(wǎng)

25、絡(luò)通信協(xié)議一般是tcp / ip。windows xp和windows nt都帶有該協(xié)議。但是,所開發(fā)的網(wǎng)絡(luò)通信應(yīng)用程序并不能直接與tcp / ip核心打交道,而是與網(wǎng)絡(luò)應(yīng)用編程界面windows sockets api打交道。windows sockets api則可直接與tcp/ip核心進(jìn)行溝通。tcp / ip核心協(xié)議連同網(wǎng)絡(luò)物理介質(zhì)(如網(wǎng)卡)一起,都是提供網(wǎng)絡(luò)應(yīng)用程序間相互通信的設(shè)施。計(jì)算機(jī)應(yīng)滿足windows 95運(yùn)行的配置要求。如果有條件,最好采用pentium或其以上檔次的微機(jī),將內(nèi)存配置到16mb,并采用1gb左右的硬盤。1.3.3 csocket類編程模型使用csocket對(duì)

26、象涉及carchive和csocketfile 類對(duì)象。以下介紹的針對(duì)字節(jié)流型套接字的操作步驟中,只有第三步對(duì)于客戶方和服務(wù)方操作是不同的,其他步驟都相同。 1.構(gòu)造一個(gè)csocket對(duì)象。 2.使用這個(gè)對(duì)象的create()成員函數(shù)產(chǎn)生一個(gè)socket對(duì)象。在客戶方程序中,除非需要數(shù)據(jù)報(bào)套接字,create()函數(shù)一般情況下應(yīng)該使用默認(rèn)參數(shù)。而對(duì)于服務(wù)方程序,必須在調(diào)用create時(shí)指定一個(gè)端口。需要注意的是,carchive類對(duì)象不能與數(shù)據(jù)報(bào)(udp)套接字一起工作,因此對(duì)于數(shù)據(jù)報(bào)套接字,casyncsocket和csocket 的使用方法是一樣的。 3.如果是客戶方套接字,則調(diào)用casy

27、ncsocket connect()函數(shù)與服務(wù)方套接字連接;如果是服務(wù)方套接字,則調(diào)用casyncsocketlisten()開始監(jiān)聽來自客戶方的連接請(qǐng)求,收到連接請(qǐng)求后,調(diào)用casyncsocketaccept()函數(shù)接受請(qǐng)求,建立連接。請(qǐng)注意accept()成員函數(shù)需要一個(gè)新的并且為空的csocket對(duì)象作為它的參數(shù),解釋同上。 4.產(chǎn)生一個(gè)csocketfile對(duì)象,并把它與csocket 對(duì)象關(guān)聯(lián)起來。5.為接收和發(fā)送數(shù)據(jù)各產(chǎn)生一個(gè)carchive 對(duì)象,把它們與csocketfile對(duì)象關(guān)聯(lián)起來。切記carchive是不能和數(shù)據(jù)報(bào)套接字一起工作的。 6.使用carchive對(duì)象的re

28、ad()、write()等函數(shù)在客戶與服務(wù)方傳送數(shù)據(jù)。7.通訊完畢后,銷毀carchive、csocketfile和csocket對(duì)象。1.3.4 用vc6.0進(jìn)行windows sockets程序開發(fā)的技術(shù)要點(diǎn)1.同常規(guī)編程一樣,無論服務(wù)器方還是客戶方應(yīng)用程序都要進(jìn)行所謂的初始化處理,這部分工作仍可采用消息驅(qū)動(dòng)機(jī)制來先期完成。 2.一般情況下,網(wǎng)絡(luò)通信程序是某應(yīng)用程序中的一模塊。在單獨(dú)調(diào)試網(wǎng)絡(luò)通信程序時(shí),要盡量與采用該通信模塊的其它應(yīng)用程序開發(fā)者約定好,統(tǒng)一采用一種界面形式,即單文檔界面sdi、多文檔界面mdi和基于對(duì)話框界面中的一種(這在使用appwizard形成項(xiàng)目project文件時(shí)有

29、提示),盡管這并非必須,但可使通信模塊在移植到所需的應(yīng)用程序時(shí)省時(shí)省力,因?yàn)関isual c+ 6.0這種可視化語言在給我們提供方便的同時(shí),也給我們帶來某些不便,譬如所形成的項(xiàng)目文件中的許多相關(guān)文件與所采用的界面形式密切聯(lián)系,許多消息驅(qū)動(dòng)功能,隨所采用的界面形式不同而各異。 當(dāng)然,也可將通信模塊函數(shù)化,并形成一個(gè)動(dòng)態(tài)連接庫文件(dll文件),供主程序調(diào)用。 3.以通信程序作為其中一個(gè)模塊的應(yīng)用程序往往不是在等待數(shù)據(jù)發(fā)送或接收完之后再做其它工作,因而在主程序中要采用多線程(multithreaded)技術(shù)。即將數(shù)據(jù)的發(fā)或收,放在一個(gè)具有一定優(yōu)先級(jí)(一般宜取較高優(yōu)先級(jí))的輔助線程中,在數(shù)據(jù)發(fā)或收期

30、間,主程序仍可進(jìn)行其它工作,譬如利用上一個(gè)周期收到的數(shù)據(jù)繪制曲線 。visual c+ 6.0中的mfc提供了許多有關(guān)啟動(dòng)線程、管理線程、同步化線程、終止線程等功能函數(shù)。 4.在許多情況下,要求通信模塊應(yīng)實(shí)時(shí)地收、發(fā)數(shù)據(jù)。譬如調(diào)用之的主程序以0.5秒為一周期,在這段時(shí)間內(nèi) ,要進(jìn)行如下工作:接收數(shù)據(jù),利用收到的數(shù)據(jù)進(jìn)行運(yùn)算,將運(yùn)算結(jié)果發(fā)送到其它計(jì)算機(jī)節(jié)點(diǎn),周而復(fù)始。我們?cè)诔浞掷脀indows sockets的基于消息的網(wǎng)絡(luò)事件異步選擇機(jī)制,用消息來驅(qū)動(dòng)數(shù)據(jù)的發(fā)送和接收的基礎(chǔ)上,結(jié)合使用其他措施,如將數(shù)據(jù)的收和發(fā)放在高優(yōu)先級(jí)線程,在軟件設(shè)計(jì)上,安排好時(shí)序,盡量避免在同一時(shí)間內(nèi),雙方都在向?qū)Ψ桨l(fā)

31、送大量數(shù)據(jù)的情況發(fā)生,保證網(wǎng)絡(luò)要有足夠的帶寬等,成功地實(shí)現(xiàn)了數(shù)據(jù)傳輸?shù)膶?shí)時(shí)性。2 microsoft access概述microsoft office access是由微軟發(fā)布的關(guān)聯(lián)式數(shù)據(jù)庫管理系統(tǒng)。它結(jié)合了 microsoft jet database engine 和 圖形用戶界面兩項(xiàng)特點(diǎn),是 microsoft office 的系統(tǒng)程式之一。2.1 microsoft access的發(fā)展進(jìn)入可提供的編程語言,當(dāng)時(shí)在另一個(gè)內(nèi)產(chǎn)品microsoft office家具,微軟公司應(yīng)用的visual basic。兩個(gè)數(shù)據(jù)庫進(jìn)入訊息庫com組成部分被提供:這筆遺產(chǎn)數(shù)據(jù)存取物體(dao),用進(jìn)入和新只

32、可提供activex數(shù)據(jù)對(duì)象(忙亂)。microsoftaccess容易被應(yīng)用于小的工程但是規(guī)模無效對(duì)大的工程如果應(yīng)用被不好設(shè)計(jì)。全部數(shù)據(jù)庫質(zhì)問,形式和報(bào)告被儲(chǔ)存在數(shù)據(jù)庫里,并且與相關(guān)的模型的理想?yún)f(xié)調(diào),沒有與他們做一個(gè)身體上組織的階層的可能性。一種設(shè)計(jì)技術(shù)是把進(jìn)入應(yīng)用在數(shù)據(jù)和計(jì)劃之間進(jìn)行分發(fā)。一數(shù)據(jù)庫應(yīng)該只包含桌子和關(guān)系,當(dāng)另一個(gè)將有全部計(jì)劃時(shí),形式,報(bào)告和質(zhì)問和對(duì)第一個(gè)數(shù)據(jù)庫桌子的連接。令人遺憾,當(dāng)連結(jié)時(shí),進(jìn)入允許沒有有關(guān)的道路,因此那些發(fā)展環(huán)境作為這種生產(chǎn)環(huán)境有相同的道路應(yīng)該(雖然你寫你們自己的能"動(dòng)態(tài)連接程序"常規(guī)在里vba那搜出能一定背面結(jié)束檔案以透過這個(gè)目錄樹搜尋

33、,如果它發(fā)現(xiàn)這條電流通路它不能)。這種技術(shù)也允許開發(fā)者在不同的檔案中分申請(qǐng),因此一些架構(gòu)是可能的。2.2 microsoft access的主要用途microsoft access在很多地方得到廣泛使用,例如小型企業(yè),大公司的部門,和喜愛編程的開發(fā)人員專門利用它來制作處理數(shù)據(jù)的桌面系統(tǒng)。它也常被用來開發(fā)簡單的web應(yīng)用程序這些應(yīng)用程序都利用asp技術(shù)在internet information services運(yùn)行比較復(fù)雜的web應(yīng)用程序則使用php/mysql或者asp/microsoft sql server它的使用方便程度和強(qiáng)大的設(shè)計(jì)工具為初級(jí)程序員提供許多功能。不過,這種便于使用可能使人

34、誤解。這類開發(fā)者都是沒有在應(yīng)用或者數(shù)據(jù)設(shè)計(jì)方面訓(xùn)練的辦公室從業(yè)人員。因此許多人以為這樣的開發(fā)者能夠創(chuàng)造可用的系統(tǒng),但也有很多人認(rèn)為工具本身的局限性產(chǎn)生了這樣的誤導(dǎo)。一些專業(yè)的應(yīng)用程序開發(fā)人員使用 access 用作快速應(yīng)用開發(fā),特別是給街道上的推銷員制作一個(gè)初型或獨(dú)立應(yīng)用程序的工具。可是如果是透個(gè)網(wǎng)絡(luò)存取數(shù)據(jù)的話,access 的可擴(kuò)放性并不高因此當(dāng)程序被較多使用者使用時(shí),他們的選擇多會(huì)是傾向于一些客戶端-服務(wù)器為本的方案,例如 oracle、db2、microsoft sql server、windows sharepoint services、postgresql、mysql、alpha

35、five、maxdb,或者filemaker。無論如何,不少 access 的功能(表單,報(bào)告,序列和vb代碼)可以用作其他數(shù)據(jù)庫的后期應(yīng)用,包括 jet(檔案為主的數(shù)據(jù)庫引擎,access 缺省使用)、microsoft sql server、oracle和任何其他跟odbc兼容的產(chǎn)品。這種方法允許開發(fā)者把一個(gè)成熟的應(yīng)用的數(shù)據(jù)移動(dòng)到一臺(tái)更大功率的服務(wù)器而沒有已經(jīng)在適當(dāng)?shù)奈恢脿奚l(fā)展。很多開發(fā)者誰使用microsoft access使用leszynski命名約定,雖然這不普遍;它是一次編程大會(huì),并非一個(gè)dbms實(shí)施的規(guī)章。2.3本系統(tǒng)的數(shù)據(jù)庫設(shè)計(jì)圖2.1用戶信息表user這張表很簡單,主要用于

36、注冊(cè)賬號(hào)和驗(yàn)證賬號(hào)登陸等功能,存著用戶的用戶名,密碼和頭像。3 odbc原理及其mfc編程3.1 odbc概述odbc(open database connectivity,開放數(shù)據(jù)庫互連)是微軟公司開放服務(wù)結(jié)構(gòu)(wosa,windows open services architecture)中有關(guān)數(shù)據(jù)庫的一個(gè)組成部分,它建立了一組規(guī)范,并提供了一組對(duì)數(shù)據(jù)庫訪問的標(biāo)準(zhǔn)api(應(yīng)用程序編程接口)。這些api利用sql來完成其大部分任務(wù)。odbc本身也提供了對(duì)sql語言的支持,用戶可以直接將sql語句送給odbc。一個(gè)基于odbc的應(yīng)用程序?qū)?shù)據(jù)庫的操作不依賴任何dbms,不直接與dbms打交道,

37、所有的數(shù)據(jù)庫操作由對(duì)應(yīng)的dbms的odbc驅(qū)動(dòng)程序完成。也就是說,不論是foxpro、access還是oracle數(shù)據(jù)庫,均可用odbc api進(jìn)行訪問。由此可見,odbc的最大優(yōu)點(diǎn)是能以統(tǒng)一的方式處理所有的數(shù)據(jù)庫。一個(gè)完整的odbc由下列幾個(gè)部件組成:1.應(yīng)用程序(application)。2.odbc管理器(administrator)。該程序位于windows 95控制面板(control panel)的32位odbc內(nèi),其主要任務(wù)是管理安裝的odbc驅(qū)動(dòng)程序和管理數(shù)據(jù)源。3.驅(qū)動(dòng)程序管理器(driver manager)。驅(qū)動(dòng)程序管理器包含在odbc32.dll中,對(duì)用戶是透明的。其任

38、務(wù)是管理odbc驅(qū)動(dòng)程序,是odbc中最重要的部件。4.odbc api。5.odbc 驅(qū)動(dòng)程序。是一些dll,提供了odbc和數(shù)據(jù)庫之間的接口。6.數(shù)據(jù)源。數(shù)據(jù)源包含了數(shù)據(jù)庫位置和數(shù)據(jù)庫類型等信息,實(shí)際上是一種數(shù)據(jù)連接的抽象。應(yīng)用程序要訪問一個(gè)數(shù)據(jù)庫,首先必須用odbc管理器注冊(cè)一個(gè)數(shù)據(jù)源,管理器根據(jù)數(shù)據(jù)源提供的數(shù)據(jù)庫位置、數(shù)據(jù)庫類型及odbc驅(qū)動(dòng)程序等信息,建立起odbc與具體數(shù)據(jù)庫的聯(lián)系。這樣,只要應(yīng)用程序?qū)?shù)據(jù)源名提供給odbc,odbc就能建立起與相應(yīng)數(shù)據(jù)庫的連接。在odbc中,odbc api不能直接訪問數(shù)據(jù)庫,必須通過驅(qū)動(dòng)程序管理器與數(shù)據(jù)庫交換信息。驅(qū)動(dòng)程序管理器負(fù)責(zé)將應(yīng)用程序?qū)?/p>

39、odbc api的調(diào)用傳遞給正確的驅(qū)動(dòng)程序,而驅(qū)動(dòng)程序在執(zhí)行完相應(yīng)的操作后,將結(jié)果通過驅(qū)動(dòng)程序管理器返回給應(yīng)用程序。在訪問odbc數(shù)據(jù)源時(shí)需要odbc驅(qū)動(dòng)程序的支持。3.2 odbc接口的工作原理 應(yīng)用程序要訪問一個(gè)數(shù)據(jù)庫,首先必須用odbc管理器注冊(cè)一個(gè)數(shù)據(jù)源,管理器根據(jù)數(shù)據(jù)源提供的數(shù)據(jù)庫位置、數(shù)據(jù)庫類型及odbc驅(qū)動(dòng)程序等信息,建立起odbc與具體數(shù)據(jù)庫的聯(lián)系。這樣,只要應(yīng)用程序?qū)?shù)據(jù)源名提供給odbc,odbc就能建立起與相應(yīng)數(shù)據(jù)庫的連接。3.3 odbc數(shù)據(jù)源的創(chuàng)建及連接1.操可通過兩種方法連接到 odbc 數(shù)據(jù)源: (1)使用設(shè)計(jì)時(shí)工具直觀操作。 (2)使用編程方式操作。 2.在服務(wù)

40、器資源管理器中連接到 odbc 數(shù)據(jù)源在服務(wù)器資源管理器中建立了與 odbc 數(shù)據(jù)源的連接之后,只需輕松地將數(shù)據(jù)對(duì)象從服務(wù)器資源管理器拖到窗體或設(shè)計(jì)器上,即可創(chuàng)建 odbcconnection、odbcdataadapter 和 odbccommand 對(duì)象。3.在服務(wù)器資源管理器中創(chuàng)建連接 在服務(wù)器資源管理器中,右擊“數(shù)據(jù)連接”,然后單擊“添加連接”。在“數(shù)據(jù)鏈接屬性”對(duì)話框中,單擊“提供程序”選項(xiàng)卡。 單擊“用于 odbc 驅(qū)動(dòng)程序的 microsoft ole db 提供程序”,然后單擊“下一步”。 從列表中選擇要訪問的 odbc 數(shù)據(jù)源,或者鍵入要訪問的 odbc 數(shù)據(jù)源的名稱。 鍵入

41、登錄到數(shù)據(jù)源時(shí)要用于身份驗(yàn)證的“用戶名稱”。 鍵入登錄到數(shù)據(jù)源時(shí)要用于身份驗(yàn)證的密碼。 單擊“確定”。 從應(yīng)用程序連接到 odbc 數(shù)據(jù)源。4.從應(yīng)用程序創(chuàng)建到數(shù)據(jù)源的連接有兩種方法,一是使用 visual studio .net 設(shè)計(jì)器直觀地完成,一是通過使用代碼創(chuàng)建數(shù)據(jù)連接對(duì)象以編程方式完成。以直觀方式連接到 odbc 數(shù)據(jù)源visual studio 支持通過以下方式創(chuàng)建數(shù)據(jù)對(duì)象,即將項(xiàng)從服務(wù)器資源管理器或“工具箱”的“數(shù)據(jù)”選項(xiàng)卡中拖到窗體或設(shè)計(jì)器上。從服務(wù)器資源管理器創(chuàng)建連接 在服務(wù)器資源管理器中創(chuàng)建與 odbc 數(shù)據(jù)源的“數(shù)據(jù)連接” 將連接拖到窗體或設(shè)計(jì)器上。odbcconnect

42、ion 對(duì)象出現(xiàn)在組件欄中。將 odbcconnection 拖到窗體或設(shè)計(jì)器上。一個(gè)未配置的 odbcconnection 對(duì)象出現(xiàn)在組件欄中。在“屬性”窗口中,單擊 connectionstring 屬性。在下拉列表中選擇現(xiàn)有連接,或者單擊“新建連接”打開“數(shù)據(jù)鏈接屬性”對(duì)話框并配置新連接。 5.以編程方式連接到 odbc 數(shù)據(jù)源您可以直接在代碼中創(chuàng)建 odbcconnection 對(duì)象。3.4 mfc 的odbc編程通過vc+中mfc odbc對(duì)數(shù)據(jù)庫訪問技術(shù)簡單介紹,工程人員在軟件開發(fā)過程中,可以根據(jù)實(shí)際情況選擇相關(guān)技術(shù),減少了軟件開發(fā)的工作量,縮短開發(fā)周期,提高了效率和軟件的可靠性。

43、mfc的odbc類對(duì)較復(fù)雜的odbc api進(jìn)行了封裝,提供了簡化的調(diào)用接口,從而大大方便了數(shù)據(jù)庫應(yīng)用程序的開發(fā)。程序員不必了解odbc api和sql的具體細(xì)節(jié),利用odbc類即可完成對(duì)數(shù)據(jù)庫的大部分操作。mfc的odbc類主要包括:cdatabase類:主要功能是建立與數(shù)據(jù)源的連接。crecordset類:該類代表從數(shù)據(jù)源選擇的一組記錄(記錄集),程序可以選擇數(shù)據(jù)源中的某個(gè)表作為一個(gè)記錄集,也可以通過對(duì)表的查詢得到記錄集,還可以合并同一數(shù)據(jù)源中多個(gè)表的列到一個(gè)記錄集中通過該類可對(duì)記錄集中的記錄進(jìn)行滾動(dòng)、修改、增加和刪除等操作。crecordview類:提供了一個(gè)表單視圖與某個(gè)記錄集直接相連

44、,利用對(duì)話框數(shù)據(jù)交換機(jī)制(ddx)在記錄集與表單視圖的控件之間傳輸數(shù)據(jù)。該類支持對(duì)記錄的瀏覽和更新,在撤銷時(shí)會(huì)自動(dòng)關(guān)閉與之相聯(lián)系的記錄集。cfieldexchange類:支持記錄字段數(shù)據(jù)交換(dfx),即記錄集字段數(shù)據(jù)成員與相應(yīng)的數(shù)據(jù)庫的表的字段之間的數(shù)據(jù)交換。該類的功能與cdataexchange類的對(duì)話框數(shù)據(jù)交換功能類似。cdbexception類:代表odbc類產(chǎn)生的異常。概括地講,cdatabase針對(duì)某個(gè)數(shù)據(jù)庫,它負(fù)責(zé)連接數(shù)據(jù)源;crecordset針對(duì)數(shù)據(jù)源中的記錄集,它負(fù)責(zé)對(duì)記錄的操作;crecordview負(fù)責(zé)界面,而cfieldexchange負(fù)責(zé)crecordset與數(shù)據(jù)源

45、的數(shù)據(jù)交換4 需求分析4.1 開發(fā)平臺(tái)應(yīng)用本程序是在windows xp的系統(tǒng)下用visual c+6.0進(jìn)行開發(fā)的,用的是microsoft accesss的數(shù)據(jù)庫。4.2 網(wǎng)絡(luò)聊天室的流程及模型圖4.2.1 流程圖圖4.1系統(tǒng)登錄流程圖4.2.2 系統(tǒng)數(shù)據(jù)模型(e-r圖)賬號(hào)頭像 密碼 用 戶 port ip n 圖4.2 系統(tǒng)數(shù)據(jù)模型圖用戶( 賬號(hào) ,密碼,ip,port,頭像)4.3 網(wǎng)絡(luò)聊天室的主要實(shí)現(xiàn)4.3.1 登陸以及身份確認(rèn)(密碼驗(yàn)證)功能的實(shí)現(xiàn):用戶在登錄界面輸入用戶id和密碼,系統(tǒng)進(jìn)行用戶身份驗(yàn)證,如果通過用戶身份驗(yàn)證則轉(zhuǎn)入相應(yīng)的工作界面,如果沒有通過用戶身份驗(yàn)證則顯示下列

46、信息:用戶名或者密碼錯(cuò)誤。用戶可以重新輸入正確的id和密碼。 輸入用戶名,密碼 確認(rèn)提交用戶身份驗(yàn)證結(jié)果noyes 顯示聊天頁面顯示錯(cuò)誤信息圖 4.3用戶登錄流程圖用戶登陸的界面:采用填文本框的方式填寫用戶名,密碼,服務(wù)器ip,和端口,以及確定、退出、注冊(cè)按鈕。圖4.4 用戶登錄界面圖其中用戶名,服務(wù)器ip, 端口號(hào)都用到了注冊(cè)表存取配置信息技術(shù)。具體實(shí)現(xiàn)為:dword size = 20;tchar values20;cregkey regkey;if(regkey.open(hkey_local_machine,"softwarechatchatroom") = err

47、or_success)if(regkey.queryvalue(values,"loginname",&size)=error_success)m_suid = values;size = 20;if(regkey.queryvalue(values,"port",&size)=error_success)m_port = atoi(values);size = 20;if(regkey.queryvalue(values,"severip",&size)=error_success)m_ip = values

48、;updatedata(false);elsesetdlgitemtext(idc_edit2,"2222"); setdlgitemtext(idc_ip,cpublic:getlocalip();意思是如果注冊(cè)表中存儲(chǔ)到有用戶名,服務(wù)器ip,端口號(hào)等這些信息,那么就從注冊(cè)表中把這些信息的值取出來賦給和登錄界面的控件相對(duì)應(yīng)的變量上,然后調(diào)用updatedata(false);方法把變量的值更新到與變量相關(guān)聯(lián)的控件上,如果注冊(cè)表中沒用這些信息,那么就把端口號(hào)控件框設(shè)為2222,然后把服務(wù)器的ip地址控件框通過調(diào)用cpublic:getlocalip() 進(jìn)行設(shè)置。 cpub

49、lic為一個(gè)公共類,其中主要就是一個(gè)getlocalip()方法,這個(gè)方法的作用就是獲取本機(jī)的ip,這是為了測試及演示的方便性考慮的。建cpubic這個(gè)公共類的主要目的是為了在各個(gè)頁面更方面的調(diào)用getlocalip()方法。界面上有3個(gè)button按鈕。1.退出為mfc的取消按鈕,功能及為取消登錄。2.注冊(cè)功能:彈出注冊(cè)界面注冊(cè)界面中可以輸入用戶名,密碼,可以選擇頭像。 注冊(cè)的原理為套接字加消息機(jī)制把注冊(cè)信息(用戶名,密碼,頭像)傳給服務(wù)器。當(dāng)服務(wù)器返回registerok$字符串時(shí)及表示登錄成功。其中調(diào)用了initsocketclient()函數(shù) 這個(gè)函數(shù)主要用做客服端socket的建立和

50、連接服務(wù)器其中的winsocket編程之套接字原理如下:圖4.5 套接字原理圖注冊(cè)成功后就可以登錄了。3.登錄把用戶名,密碼等信息用socket傳給服務(wù)器,返回posswordok字符串及登錄成功。之后把用戶信息存入注冊(cè)表中。之后進(jìn)入聊天界面。4.3.2 客服端聊天功能實(shí)現(xiàn)用戶聊天界面,上面部分顯示有用戶的賬號(hào),服務(wù)器的ip ,和用戶自己的ip地址。其中服務(wù)器ip的值是在chatclient.h 頭文件中定義了個(gè)cstring sip 。然后用(cchatclientapp*)afxgetapp()->sip;進(jìn)行調(diào)用。我的ip的值依然是調(diào)用cpublic:getlocalip()函數(shù)得

51、到的。下面就是消息區(qū):左邊為在線用戶列表,其中每一項(xiàng)為用戶的頭像和用戶名初始化列表為一個(gè)函數(shù),如下:bool cchatclientdlg:initlistctrl()/圖像列表控制(cimagelist)是相同大小圖像的一個(gè)集合,每個(gè)集合中均以0為圖像的索引序號(hào)基數(shù),圖像列表通常由大圖標(biāo)或位圖構(gòu)成,其中包含透明位圖模式m_imagelist.create(32, 32, ilc_mask|ilc_color8, 0, 7);/create 初始化圖像列表并for(int i=0; i<=6; i+)m_imagelist.add(afxgetapp()->loadicon(idi

52、_icon1+i);/添加一個(gè)或多個(gè)圖象到圖象列表中m_listuser.setimagelist(&m_imagelist, lvsil_small);/指定一個(gè)圖象列表到列表視圖控件/clistctrl類封裝“列表視圖控件”功能,顯示每個(gè)包含圖標(biāo)(列表視圖中)和標(biāo)簽的收集。除圖標(biāo)和標(biāo)簽外,每一項(xiàng)還能有顯示在圖標(biāo)和標(biāo)簽的右邊的列中的信息crect rect;/crect類與windows rect結(jié)構(gòu)相似,并且還包括操作crect對(duì)象和windows rect結(jié)構(gòu)的成員函數(shù)/rect結(jié)構(gòu)定義了矩形的左上角坐標(biāo)和右下角坐標(biāo)m_listuser.getclientrect(&re

53、ct);/該函數(shù)獲取窗口客戶區(qū)的坐標(biāo)。m_listuser.insertcolumn(0, _t("用戶列表"), lvcfmt_center, rect.right);/插入列表視圖控件中的新列return true;然后這個(gè)聊天室的核心就是用到了套接字非阻塞模式中的wsaasyncselect(異步選擇)模型簡述:通知套接口有請(qǐng)求事件發(fā)生. #include <winsock.h>int pascal far wsaasyncselect ( socket s, hwnd hwnd,unsigned int wmsg, long levent ); s 標(biāo)識(shí)

54、一個(gè)需要事件通知的套接口的描述符.hwnd 標(biāo)識(shí)一個(gè)在網(wǎng)絡(luò)事件發(fā)生時(shí)需要接收消息的窗口句柄.wmsg 在網(wǎng)絡(luò)事件發(fā)生時(shí)要接收的消息.levent 位屏蔽碼,用于指明應(yīng)用程序感興趣的網(wǎng)絡(luò)事件集合.注釋:本函數(shù)用來請(qǐng)求windows sockets dll為窗口句柄發(fā)一條消息無論它何時(shí)檢測到由levent參數(shù)指明的網(wǎng)絡(luò)事件.要發(fā)送的消息由wmsg參數(shù)標(biāo)明.被通知的套接口由s標(biāo)識(shí).本函數(shù)自動(dòng)將套接口設(shè)置為非阻塞模式.levent參數(shù)由下表中列出的值組成.值意義:fd_read 欲接收讀準(zhǔn)備好的通知.fd_write 欲接收寫準(zhǔn)備好的通知.fd_oob 欲接收帶邊數(shù)據(jù)到達(dá)的通知.fd_accept 欲

55、接收將要連接的通知.fd_connect 欲接收已連接好的通知.fd_close 欲接收套接口關(guān)閉的通知. 啟動(dòng)一個(gè)wsaasyncselect()將使為同一個(gè)套接口啟動(dòng)的所有先前的wsaasyncselect()作廢. 例如,要接收讀寫通知,應(yīng)用程序必須同時(shí)用fd_read和fd_write調(diào)用wsaasyncselect(),如下:rc = wsaasyncselect(s, hwnd, wmsg, fd_read|fd_write);程序中為::wsaasyncselect(cchatclientapp*)afxgetapp()>m_socketclient,this>get

56、safehwnd(),wm_client,fd_connect|fd_read|fd_write|fd_close);其中wm_client為自定義的消息然后為它定義了一個(gè)消息處理函數(shù)lresult cchatclientdlg:onclient(wparam wparam,lparam lparam)其中主要判斷l(xiāng)param 為fd_connect fd_read fd_write還是fd_close以及對(duì)相關(guān)情況進(jìn)行處理其中fd_read情況為主,包含了登錄的情況,其他用戶退出的情況以及正常發(fā)送消息的情況。右邊為消息顯示區(qū)域:有服務(wù)器發(fā)送的消息,其他用戶發(fā)送的消息,以及自己發(fā)送的消息。最下

57、邊的區(qū)域?yàn)榫帉懽约旱南?,然后通過發(fā)送按鈕發(fā)送出去4.3.3 服務(wù)器端功能實(shí)現(xiàn)服務(wù)器端的界面和客服端聊天界面基本一樣,只是最上面的多了個(gè)啟動(dòng)服務(wù)器按鈕 其中也用到了套接字非阻塞模式中的wsaasyncselect自定義了wm_server消息及處理函數(shù)lresult cchatseverdlg:onserver(wparam wparam,lparam lparam)這個(gè)函數(shù)也是其處理核心。與客服端的處理函數(shù)類似。然后還建了一個(gè)cuserinformation類用于儲(chǔ)存用戶的一些資料。成員函數(shù)如下:socket isocket;int iindex;cstring iname;cstring ipasswor

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論