【正文】
底層函數(shù)來進行通信操作 ,而 CSocket 為底層函數(shù)提供了一個更抽象的封裝 ,替編程者執(zhí)行對底層函數(shù)的操作 ,簡化了 Socket 編程。基于套接字的程序先創(chuàng)建一個套接字 ,然后再將套接字和目標終點連接起來。若通過套接字接口進行網(wǎng)絡(luò)互連 ,則程序在每個網(wǎng)絡(luò)互連的末端都需要一個套接字 ,套接字接口相當于文件系統(tǒng) ,可以使用 API 通過網(wǎng)絡(luò)軟件申請一個可以指定特定套接 字的句柄來定義套接字的特性。換句話說 ,網(wǎng)絡(luò)互連是兩個計算機或處理器通過網(wǎng)絡(luò)相互傳輸數(shù)據(jù)。它是網(wǎng)絡(luò)通信的基本構(gòu)件。因為在 Socket 環(huán)境下編程很像是打電話的模擬 ,Inter 的 IP 地址就是電話號碼 ,要打電話 ,首先要有個電話插座 ,在程序中就是向系統(tǒng)申請一個 Socket,以后兩臺機器上的程序“交談”都是通過這個 Socket 來進行的。這種可視化的編程方法易學(xué)易用,而且大大提高了工作效率??梢暬幊淌撬闹匾獞?yīng)用之一。 由于是一個可視化的開發(fā)工具,在介紹的各個組成部分之前,首先了解一下可視化編程的概念。使用,可以完成創(chuàng)建、調(diào)試、修改應(yīng)用程序等的各種操作。 3 開發(fā)環(huán)境及編程語言介紹 Visual C++可視化集成開發(fā)環(huán)境 是微軟推出的一款可視化編程工具,適用面非常廣泛。 上述軟件都實現(xiàn)了廣域網(wǎng)上的即時通信,在使用方面各有特色,在實現(xiàn)方面也各有所長。 圖 2 MSN 服務(wù)器 客戶端模型 騰訊使用的模型中,服務(wù)器主要處理客戶端各種狀態(tài)的控制,可以極大減輕服務(wù)器的處理壓力,但其內(nèi)部協(xié)議和實現(xiàn)復(fù)雜度都較高。服務(wù)器模塊主要用來維護網(wǎng)絡(luò)上所有 用戶的信息,如用戶名;聊天客戶端模塊主要包括用戶登錄、發(fā)送信息、接收信息等整個工程采用結(jié)構(gòu)化的方式進行編譯,逐步完善系統(tǒng)功能。它有兩個程序組成:服務(wù)器和客戶端,首先需要登錄服務(wù)器,需要指定服務(wù)器地址和端口號,同時設(shè)置一個網(wǎng)名,與服務(wù)器建立連接,如果所取網(wǎng)名已經(jīng)被其他已經(jīng)登錄的客戶端使用,服務(wù)器會告訴客戶端 ,要求重新登錄。 UDP 的實時性比較好,但是不一定提供可靠的數(shù)據(jù)傳輸,TCP 可以提供可靠的數(shù)據(jù)傳輸,本課題采用 TCP 完成局域網(wǎng)聊天室的設(shè)計。基于 Socket 的局域網(wǎng)通信軟件應(yīng)用范圍廣闊,不但可以處理傳統(tǒng)的通信需求,而且也能擴展以適應(yīng)新型的網(wǎng)絡(luò)應(yīng)用,如網(wǎng)絡(luò)教育,數(shù)據(jù)影音傳輸?shù)?,擁有廣泛的應(yīng)用前景。 基于 Socket 的局域網(wǎng)聊天工具很好地詮釋了 Socket 通信的原理,并且在企業(yè)內(nèi)部通信、教學(xué)、討論等應(yīng)用中都具有一定的實用價值。 本系統(tǒng)采用基于 Socket 的方法實現(xiàn)局域網(wǎng)通信,基于 Socket 的局域網(wǎng)通信軟件可以為企業(yè)原有的局域網(wǎng)提供一種良好,安全,快速的通信機制。即時通訊的發(fā)展在基礎(chǔ)應(yīng)用方面在內(nèi),許多即時性聊天工具都推出了語音聊天、視頻聊天功能模塊。基于 VC++網(wǎng)絡(luò)編程的強大功能,本次畢業(yè)設(shè)計使用 VC++編寫一個聊天系統(tǒng)。 VC++;套接字;傳輸控制協(xié)議;網(wǎng)絡(luò);聊天室 Abstract Along with the highspeed development of the puter science and Inter, chatting on line has been an important method in our munication. Comparing with Email and telephone, the chatline service is more realtime and effective. The subject under discussion adopts the method of the software project ,use procedure designing technique and the work technology. The project use Visual C++ as the development tools,mainly studies under the TCP/IP protocol of LAN chat rooms. This local area work chat tool adopts client/server mechanism C/S and is posed of two ponents:the server and the client. The server model is mainly used to prootect all users ’ information ,incuuding user’s name and so on。而 Socket是 Windows中得到廣泛應(yīng)用的、開放的、支持多協(xié)議的網(wǎng)絡(luò)編程接口。 系統(tǒng)采用 CSocket 實現(xiàn)連網(wǎng)功能。 此局域網(wǎng)聊天采用客戶端 /服務(wù)器( C/S)模式和 TCP 連接。畢業(yè)論文 基于 VC 的局域網(wǎng)聊天室設(shè)計與實現(xiàn) 目 錄 摘 要 I Abstract II 1 緒論 1 論文的目的和意義 1 論文的主要內(nèi)容 2 2 國內(nèi)外聊天系統(tǒng)的現(xiàn)狀 3 3 開發(fā)環(huán)境及編程語言介紹 5 Visual C++可視化集成開發(fā)環(huán)境 5 網(wǎng)絡(luò)編程 5 4 局域網(wǎng)聊天室的設(shè)計 7 客戶機 /服務(wù)器模式 7 系統(tǒng)實現(xiàn)原理 7 系統(tǒng)工作流程 10 界面設(shè)計 11 5 局域網(wǎng)聊天室 的實現(xiàn) 12 準備工作 12 功能實現(xiàn) 15 6 結(jié)論 27 參考文獻 29 附 錄 30 致 謝 38 隨著計算機科學(xué)和 Inter 的飛速發(fā)展 , 網(wǎng)上聊天已成為人們相互交流的一種方式 , 與 Email、電話相比 , 聊天服務(wù)更具有實時性和有效性。主要研究了在 TCP/IP 協(xié)議下局域網(wǎng)聊天室。它有兩個組成:服務(wù)器和客戶端服務(wù)器模塊主要用來維護網(wǎng)絡(luò)上所有用戶的信息,如用戶名聊天客戶端模塊主要包括用戶登錄、發(fā)送信息、接收 信息等整個工程采用結(jié)構(gòu)化的方式進行編譯,逐步完善系統(tǒng)功能。 CSocket 是 MFC 在 CAsyncSocket 基礎(chǔ)上派生的一個同步阻塞 Socket的封裝類。 該聊天室是一套適用于 Inter 網(wǎng)絡(luò)使用的網(wǎng)絡(luò)聊天,其操作簡單,靈活性好,運行也比較穩(wěn)定。The client model includes user regediting,sending message,receiving message and so on. System uses CSocket to achieve working. CSocket is a synchronous blocking Socket wrappers derived by MFC based on CAsynncSocket. The Socket is widely used for open, multiprotocol work programming interface in windows. This work chat tool can be used in inter environment ,it can be operated simply, its flexibility is fine and can run steadily. Key Words: VC++; CSocket; TCP;1 緒論 在網(wǎng)絡(luò)越來越發(fā)達的今天,人們對網(wǎng)絡(luò)的依賴越來越多,越來越離不開網(wǎng)絡(luò),由此而產(chǎn)生的聊天工具越來越多,例如,國外的 ICQ、國內(nèi)騰訊公司開發(fā)的 OICQ。 用戶需 求 ,即時通訊的產(chǎn)品也不斷。本課題研究的是基于局域網(wǎng)的聊天室,用 VC++編寫的程序,程序?qū)崿F(xiàn)一般的文字聊天功能,可作為某局域網(wǎng)的交流工具。它的實現(xiàn)無需對企業(yè)原有的局域網(wǎng)硬件進行任何改動,具有實現(xiàn)成本低廉的優(yōu)點,它的使用能有效地降低局域網(wǎng)通信負荷,提高局域網(wǎng)的使用效率,可以很好地解決企業(yè)內(nèi)部局域網(wǎng)的各種通信需求。它具有信息收發(fā)速度快,保密性好,占用網(wǎng)絡(luò)帶寬資源低,占用服務(wù)器吞吐能力低,易于編程實現(xiàn)等優(yōu)點 [3]。 如今基于局域網(wǎng)的即時通信工具一般采用 UDP 或者 TCP 協(xié)議體系來實現(xiàn) ,開發(fā)技術(shù)已經(jīng)比較成熟。 論文的主要內(nèi)容 本課題主要研究的是局域網(wǎng)聊天室,該聊天采用客戶端 /服務(wù)器( C/S)模式和 TCP 連接。登錄后,客戶端各用戶可以發(fā)送文字信息,相互聊天。 圖 1 騰訊服務(wù)器 客戶端模型 與騰訊不同,微軟的 MSN Messenger 只使用了 TCP 作為傳輸層通信協(xié)議,所有客戶端與服務(wù)器進行連接,然后通過與服務(wù)器的 TCP 連接進行中轉(zhuǎn)通信。而 MSN Messenger 所有數(shù)據(jù)都要經(jīng)過服務(wù)器,服 務(wù)器壓力可想而知(難怪平時很少見到使用 MSN 進行語音視頻聊天的)。但是隨著企業(yè)規(guī)模的擴大,業(yè)務(wù)量的增加,企業(yè)內(nèi)部的信息越來越私密,企業(yè)只希望員工通過內(nèi)部局域網(wǎng)進行溝通與交流,避免企業(yè)內(nèi)部機密通過Inter 泄露到外部,所以局域網(wǎng)的聊天工具也占了很大的市場 [4]。 包含了一個文本編輯器 、資源編輯器、工程編譯工具、一個增量連接器、源代碼瀏覽器、集成調(diào)試工具,以及一套聯(lián)機文檔。采用標準的多窗口 Windows 用戶界面,并增加了一些新特性,使得開發(fā)環(huán)境更易于使用,用戶很容易學(xué)會它的使用方法??梢暬夹g(shù)是當前發(fā)展迅速并引人注目的技術(shù)之一,它的特點是把原來抽象的數(shù)字、表格、功能邏輯等用直觀的圖形、圖象的形式表現(xiàn)出來。所謂可視化編程,就 是指:在軟件開發(fā)過程中,用直觀的具有一定含義的圖標按鈕、圖形化的對象取代原來手工的抽象的編輯、運行、瀏覽操作,軟件開發(fā)過程表現(xiàn)為鼠標點擊按鈕和拖放圖形化的對象以及指定對象的屬性、行為的過程。 套接字是從英文單詞 socket 翻譯過來的 , Socket 在英文中是插座的意思 ,在這里設(shè)計者實際上是暗指電話插座。對程序員來說 ,也可以把 Socket 看成一個文件指針 ,只要向指針所指的文件讀寫數(shù)據(jù) ,就可以實現(xiàn)雙向通訊。套接字是可以被命名和尋址的通信端點 ,是網(wǎng)絡(luò)互連終點。網(wǎng)絡(luò)專業(yè)人員將每個網(wǎng)絡(luò)會話的末端稱做終點。當然 ,套接字句柄和文件句柄是不同的 ,文件句柄指向一個特定的文件和設(shè)備 ,而套接字句柄并不代表一個特定的