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

正文內(nèi)容

畢業(yè)設(shè)計(jì)---局域網(wǎng)即時(shí)通信軟件設(shè)計(jì)(編輯修改稿)

2025-01-06 18:04 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 ,這樣可以方便編程人員,提高效率。 : C具有強(qiáng)大的數(shù)據(jù)庫(kù)管理功能,利用數(shù)據(jù)控件和數(shù)據(jù)庫(kù)管理窗口,可以直接建立或處理 Microsoft SQL Server 2021 Express 格式的數(shù)據(jù)庫(kù),并提供了強(qiáng)大的數(shù)據(jù)存儲(chǔ)和檢索功能。同時(shí), C還能直接編輯和訪問(wèn)其他外部數(shù)據(jù)庫(kù),如: DATABASE, FoxPro, Paradox等,這些數(shù)據(jù)庫(kù)格式都可以用 C 編輯和處理。 C提供開(kāi)放式數(shù)據(jù)連接,即 功能, 可通過(guò)直接訪問(wèn)或建立連接的方式使用并操作后臺(tái)大型網(wǎng)絡(luò)數(shù)據(jù)庫(kù),如 SQL Server, Oracle 等。在應(yīng)用程序中,可以使用結(jié)構(gòu)化查詢語(yǔ)言 SQL 數(shù)據(jù)標(biāo)準(zhǔn),直接訪問(wèn)服務(wù)器上的數(shù)據(jù)庫(kù),還提供了簡(jiǎn)單的面向?qū)ο蟮膸?kù)操作指令和多用戶數(shù)據(jù)庫(kù)訪問(wèn)的加鎖機(jī)制和網(wǎng)絡(luò)數(shù)據(jù)庫(kù)的 SQL 的編程技術(shù),為單機(jī)上運(yùn)行的數(shù)據(jù)庫(kù)提供了 SQL 網(wǎng)絡(luò)接口,可以在分布式環(huán)境中快速而有效地實(shí)現(xiàn)客戶 /服務(wù)器(client/server)方案。 (DDE)功能: 利用動(dòng)態(tài)數(shù)據(jù)交換 (Dynamic Data Exchange)技術(shù),可以把一種應(yīng) 用程序中的數(shù)據(jù)動(dòng)態(tài)地鏈接到另一種應(yīng)用程序中,使兩種完全不同的應(yīng)用程序建立起一條動(dòng)態(tài)數(shù)據(jù)鏈路。當(dāng)原始數(shù)據(jù)變化時(shí),可以自動(dòng)更新鏈接的數(shù)據(jù)。 C提供了動(dòng)態(tài)數(shù)據(jù)交換的編程技術(shù),可以在應(yīng)用程序中與其他 Windows 應(yīng)用程序建立動(dòng)態(tài)數(shù)據(jù)交換,在不同的應(yīng)用程序之間進(jìn)行通信。 (OLE)功能: 對(duì)象的鏈接與嵌入 (OLE)將每個(gè)應(yīng)用程序都看作是一個(gè)對(duì)象 (object),將不同的對(duì)象鏈接 (link)起來(lái),再嵌入 (embed)某個(gè)應(yīng)用程序中,從而可以得到具有聲音、影像、圖像、動(dòng)畫(huà)、文字等各種信息的集合式的文件 。利用 OLE 技術(shù),可以方便地建立復(fù)合式文檔(pound document),這種文檔由來(lái)自多個(gè)不同應(yīng)用程序的對(duì)象組成,文檔中的每個(gè)對(duì)象都與原來(lái)的應(yīng)用程序相聯(lián)系,并可執(zhí)行與原來(lái)應(yīng)用程序完全相同的操作。 Visual Basic就采用了 OLE 技術(shù)。 (DLL)功能: C 是一種高級(jí)程序設(shè)計(jì)語(yǔ)言,不具備低級(jí)語(yǔ)言的功能,對(duì)訪問(wèn)機(jī)器硬件的操作不太容易實(shí)現(xiàn)。但它可以通過(guò)動(dòng)態(tài)鏈接庫(kù)技術(shù)將 C/C++或匯編語(yǔ)言編寫(xiě)的程序加入到 C 應(yīng)用程序中,可以像調(diào)用內(nèi)部函數(shù)一樣調(diào)用其他語(yǔ)言編寫(xiě)的函數(shù)。此外,通過(guò)動(dòng)態(tài)鏈 接庫(kù),還可以調(diào)用 Windows 應(yīng)用程序接口 (API)函數(shù),實(shí)現(xiàn) SDK 所具有的功能。 主要設(shè)計(jì)功能 本程序需要具備以下功能: 用戶密碼驗(yàn)證功能; 與在線用戶進(jìn)行即時(shí)通信交流; 保存與離線好友交流文字信息功能; 顯示所有好友在線和離線功能; 查詢聊天記錄功能; 數(shù)據(jù)庫(kù)設(shè)計(jì) 在 Mysql 中建立名稱為 client 的數(shù)據(jù)庫(kù),并在此數(shù)據(jù)庫(kù)中創(chuàng)建 chatlog、 class、 user三個(gè)數(shù)據(jù)表分別用來(lái)存放聊天記錄、存放班級(jí)信息和存放用戶 信息。 以下為對(duì)各個(gè)數(shù)據(jù)表的詳細(xì)說(shuō)明。 class 表簡(jiǎn)介 class 數(shù)據(jù)表設(shè)計(jì)視圖如表 21 所示: 表 21 class 表 classBM classNAME 0541 文通 0541 0542 文通 0542 0441 文通 0441 0442 文通 0442 0431 文通 0431 如上 表 所示, class 表共有 classBM、 classNAME 兩個(gè)字段,分別存放班級(jí)編碼和班級(jí)名稱,并且必須一一對(duì)應(yīng)。在設(shè)計(jì)程序中的好友列表中,作為所有學(xué)生的根節(jié)點(diǎn)。在好友列表顯示時(shí),可根據(jù)學(xué)生所屬班級(jí)進(jìn)行 方便快速的查找。所有學(xué)生必須只屬于一個(gè)班級(jí)編碼下,否則不能正常顯示。此表由服務(wù)器所在電腦維護(hù)。 user 表簡(jiǎn)介 user 數(shù)據(jù)表設(shè)計(jì)視圖如表 22所示: 表 22 user 表 id name password classBM 1 Tom 1111 0542 2 Key 2222 0541 3 Yuki 3333 0541 4 張三 4444 0431 5 李四 5555 0442 user 表共有 id、 name、 password、 classBM 四個(gè)字段,分表用來(lái)存放用戶 id、姓名 、密碼、班級(jí)代碼。 id字段為此數(shù)據(jù)表主鍵,不允許重復(fù),作為用戶的唯一標(biāo)示??勺詣?dòng)生成。 name 字段為學(xué)生的姓名信息,可通過(guò)它登錄系統(tǒng)。 password 字段為此用戶的密碼,最多可維護(hù)進(jìn) 15 個(gè)字符。在系統(tǒng)登錄時(shí),填寫(xiě)的姓名與密碼必須同時(shí)驗(yàn)證成功才能正確的登錄系統(tǒng)。 classBM 字段為學(xué)生所屬班級(jí)代碼,每條學(xué)生信息必須維護(hù)此字段,否則無(wú)法在用戶列表中正確顯示。 chatlog 表簡(jiǎn)介 chatlog 表視圖如表 23所示: 表 23 chatlog 表 FROMUSER TOUSER DATETIMEN LOGS Key 張三 09053003234351 你好 張三 Key 09053005234521 哈嘍 Tom 王二 09053008443213 測(cè)試 1 Tom 張三 09053008452313 測(cè)試 2 王二 Key 09053009553234 測(cè)試 3 Yuki 王二 09053002113452 測(cè)試 4 張三 Tom 09053001235252 測(cè)試 5 chatlog 表共有 FROMUSER、 TOUSER、 DATETIMEN、 LOGS 四字段,分表存放聊天記錄的發(fā)送方、接 收方、時(shí)間、內(nèi)容。 FROMUSER 字段為聊天記錄發(fā)送方姓名,與表 2 中 name 字段外鍵關(guān)系,所以必須為 user中用戶名稱一致。 TOUSER 字段為聊天記錄接收方姓名,與表 2 中 name 字段外鍵關(guān)系,所以必須為 user中用戶名稱一致。 DATETIMEN 字段為聊天記錄在服務(wù)器中轉(zhuǎn)的時(shí)間(精確到毫秒),此字段與 FROMUSER、TOUSER 字段共同作為此表的主鍵,保證了每條記錄主鍵不沖突。 LOGS 此字段用以存放聊天記錄,字段數(shù)據(jù)類型為 TEXT,所以可輕松用于可進(jìn)行大數(shù)據(jù)編輯。 基本實(shí)現(xiàn)原理 WINSOCK 接口 WINSOCK 標(biāo) 準(zhǔn) 定 義 了 一 個(gè) DLL 接 口 , 通 常 叫 做 或者。無(wú)論機(jī)器上安裝了哪一個(gè) DLL,只要函數(shù)的名字,參數(shù)含義以及最終的功能是相同的,應(yīng)用程序就可以調(diào)用這些函數(shù)。在插口編程里一個(gè)重要的概念就是一個(gè)插口的端口。 局域網(wǎng)內(nèi) 的每一個(gè)站點(diǎn)都有一個(gè)數(shù)字地址稱為 IP 地址,通常是由 “ .” 分開(kāi)的四個(gè)數(shù)。在機(jī)器上運(yùn)行的程序可以隨心所欲地用 端口 與其他機(jī)器進(jìn)行通信。多數(shù) 端 口的工作是基于連接的:兩個(gè)程序在每一端用一個(gè) 端 口形成一個(gè)連接,然后沿著該連接收發(fā)數(shù)據(jù)。有些應(yīng)用程序傾 向無(wú)連接地發(fā)送,但是這些數(shù)據(jù)的到達(dá)是沒(méi)有保障的。 實(shí)際上是作為 WinSock 應(yīng)用程序和 TCP/IP 協(xié)議棧之間的中間層。用戶的應(yīng)用程序告訴 需要做什么, TCP/IP協(xié)議棧,由 TCP/IP 協(xié)議棧傳送到網(wǎng)絡(luò)。但是重要的事情是用戶必須注意用戶使用的 必須和 TCP/IP 的版本號(hào)一致。 客戶機(jī) /服務(wù)器模式 由于 Winsock 支持多種協(xié)議上的網(wǎng)絡(luò)程序開(kāi)發(fā), 比如 TCP、 UDP、和 IP 等等。由于這次課程設(shè)計(jì) 是實(shí)現(xiàn)點(diǎn)到點(diǎn)的可靠連接,所以在此使用 TCP 連接方式。在這個(gè)連接中,雙方分為客戶和服務(wù)器,他們各自的功能不同。 客戶機(jī)一方, TCP/IP 應(yīng)用程序功能如下: ( 1) 打開(kāi)通信信道(申請(qǐng)一套接字),并連接到服務(wù)器在主機(jī)的保留端口,該端口對(duì)應(yīng)服務(wù)器的 TCP/IP 進(jìn)程。 ( 2) 向服務(wù)器發(fā)出請(qǐng)求報(bào)文,等待接收應(yīng)答。 ( 3) 從服務(wù)器方收到最終應(yīng)答結(jié)果,或在不再請(qǐng)求時(shí)關(guān)閉信道并終止客戶機(jī)進(jìn)程。 服務(wù)器一方, TCP/IP 應(yīng)用程序動(dòng)作如下: ( 1) 打開(kāi)通信信道(申請(qǐng)一套接字),通知本地主機(jī)在某一保留端口接收客戶機(jī)請(qǐng)求。 ( 2) 等待客戶請(qǐng)求到達(dá)指定端口。 ( 3) 接收到請(qǐng)求,啟動(dòng)一新進(jìn)程處理用戶請(qǐng)求,同時(shí)釋放舊進(jìn)程以響應(yīng)新的客戶請(qǐng)求,一旦服務(wù)完成,關(guān)閉新進(jìn)程與客戶的通信鏈路。 ( 4) 繼續(xù)等待客戶機(jī)請(qǐng)求。 ( 5) 如果不想響應(yīng)客戶機(jī)請(qǐng)求,關(guān)閉服務(wù)器進(jìn)程。 綜上所述, TCP/IP 應(yīng)用中的服務(wù)器程序必須先于客戶機(jī)進(jìn)程啟動(dòng),直到對(duì)客戶機(jī)的響應(yīng)結(jié)束或強(qiáng)迫終止。其面向連接的應(yīng)用程序流程圖如圖 21。 圖 21 C/S 模式 二者的結(jié)合( DBA) C 的連接 : C 提供了與底層數(shù)據(jù)庫(kù)系統(tǒng)緊密的連接。 它 支持不同的 關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)并充分發(fā)揮每一個(gè)數(shù)據(jù)庫(kù)的特長(zhǎng) , 生成獨(dú)立應(yīng)用或脫離服務(wù)器運(yùn)行 的 應(yīng)用 程序。 C 連接數(shù)據(jù)庫(kù)的方式有兩種: 方式一, 通過(guò)使用 C 的 DATA 控件 ;方式二, 通過(guò)使用由 C 提供的專用的直接與數(shù)據(jù)庫(kù)相連的接口 。 驅(qū)動(dòng)與 DATA 控件 的橋梁作用: 使用 Mysql 公司的 .NET 驅(qū)動(dòng)包 ,并引用驅(qū)動(dòng)包內(nèi)已編譯好 Mysql 類組件,便可以更方便的在 VisualStudio2021 中操作 Mysql 數(shù)據(jù)庫(kù)。 DATA 在數(shù)據(jù)庫(kù)中的信息與將信息顯 示給用戶看的 C 程序之間架起了一座橋梁。我們可以設(shè)置 DATA 控件的各個(gè)屬性,告訴它要調(diào)用 哪 個(gè)數(shù)據(jù)庫(kù)的哪個(gè)部分。缺省情況下, DATA控件根據(jù)數(shù)據(jù)庫(kù)中的一個(gè)或多個(gè)數(shù)據(jù)表建立一個(gè) dynasettype(動(dòng)態(tài)集合)類型的記錄集合。一個(gè)記錄集合是動(dòng)態(tài)的也就意味著,當(dāng)原來(lái)的數(shù)據(jù)表中的 內(nèi) 容改變了以后,該記錄集合中的記錄也會(huì)隨之改變。 DATA 控件還提供了用來(lái)瀏覽不同記錄的各種跳轉(zhuǎn)按鈕。將 DATA 控件放置在窗體中之后,我們還必須在該控件與要處理的數(shù)據(jù)庫(kù)之間建立聯(lián)系。 客戶端安裝在與服務(wù)器同一局域網(wǎng)的任意一臺(tái)計(jì)算機(jī)上,用戶通過(guò)正確用戶名與密碼便可登錄,并進(jìn)行與服務(wù)器或者其他客戶端的即時(shí)通信。 下面將對(duì)客戶端的各功能進(jìn)行介紹: 用戶登陸功能 登陸界面如 圖 31 所示: 圖 31 登陸界面圖 賬號(hào)文本框:填寫(xiě)用戶名; 密碼文本框:填寫(xiě)用戶密碼; 服務(wù)器 IP框:填寫(xiě)服務(wù)器所在計(jì)算機(jī)的局域網(wǎng) IP 地址; 服務(wù)器 端 口文本框:填寫(xiě)服務(wù)器所開(kāi)此服務(wù)的端口號(hào),本系統(tǒng)缺省默認(rèn)為服務(wù)器的“ 1234”端口。 連接服務(wù)器 使用類: 為 TCP 網(wǎng)絡(luò)服務(wù)提供客戶端連接,類: 提供用于網(wǎng)絡(luò)訪問(wèn)的基礎(chǔ)數(shù)據(jù)流。聲明為全局變量代碼如下: TcpClient tcpCli。//與服務(wù)器的連接 (客戶端 ) private NetworkStream stream。//與服務(wù)器數(shù)據(jù)交互的流通道 將用戶名、密碼、服務(wù)器 IP、服務(wù)器端口號(hào)填寫(xiě)完成后,點(diǎn)擊登陸按鈕,將實(shí)例化TcpClient 類的新實(shí)例,并使用 指定的 IP 地址與端口號(hào)將客戶端連接到 TCP 主機(jī)。代碼如下: tcpCli = new TcpClient()。 ((), ())。//連接遠(yuǎn)程服務(wù)器 其中 IP文本框內(nèi)容 。 然后返回用于發(fā)送和接收數(shù)據(jù)的 NetworkStream: stream = ()。 開(kāi)啟新線程用于接收服務(wù)器發(fā)回的消息 在計(jì)算機(jī)的同一線程內(nèi)同時(shí)處理發(fā)出與接收的消息是沒(méi)有保證的,所以編寫(xiě) Incept()函數(shù)來(lái)接受服務(wù)器的請(qǐng)求。并開(kāi)啟另外一個(gè)線程,用于接收服務(wù)器發(fā)回的消息,并作出相應(yīng)的處理。聲明新線程,并啟動(dòng),代碼如下: ThreadStart incept = new ThreadStart()。 Thread thread = new Thread(incept)。 ()。 向服務(wù)器發(fā)送用戶名與密碼信息 因?yàn)橛糜诰W(wǎng)絡(luò)訪問(wèn)的基礎(chǔ)數(shù)據(jù)流的數(shù)據(jù)類型為字符編碼,所以將用戶名與密碼轉(zhuǎn)化為字符編碼數(shù)組,然后寫(xiě)入基礎(chǔ)數(shù)據(jù)流 NetworkStream,服務(wù)器便能接收到消息。 創(chuàng)建字符串,以“ CON”作為前綴,并以“ |”符號(hào)將用戶名與密碼隔開(kāi),以便服務(wù)器進(jìn)行分析,代碼如下: string userName = ()。 string cmd = CON| + userName+ | + + |。 消息格式為:“ CON|用戶名 |密碼 |”。 然后將此字符串轉(zhuǎn)化為字符編碼數(shù)組,并寫(xiě)入 NetworkStream,代碼如下: Byte[] outbytes = . GetBytes(())。 (ou
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1