【正文】
)。 CFile file。 CString strFileName = (iSel, 0)。 另外, 對于較大的文件, 應(yīng)該分批傳輸,一般每次1至4KB為宜,以保證數(shù)據(jù)傳輸?shù)姆€(wěn)定性, 同時(shí)也不至于過多地占用系統(tǒng)資源。這時(shí)信息只顯示在聊天人的客戶端中,而在其他客戶端,并不顯示該信息。 pDocSendMsg()。 BYTE i1=GetRValue(pDocclr)。 pDoc=to。 int j=()。 GetDlgItem(IDC_TEXT)GetWindowText(strText)。啟動(dòng)服務(wù)端,顯示服務(wù)端界面:圖6 用戶管理界面打開客戶端,顯示客戶端登陸界面:從名稱的下拉列表框中選擇登錄的用戶,單擊確定,進(jìn)入該用戶聊天的界面,同時(shí)服務(wù)端也會顯示出該用戶的進(jìn)入信息:在聊天對象中,選擇所有人,在聊天信息中,輸入信息,單擊發(fā)送信息。 本實(shí)驗(yàn)采用VS 2003 為平臺利用VC++開發(fā)語言進(jìn)行程序編寫。更加重要的是CSocket 和Carchive 類提供了對于同步操作Carchive 對象十分重要的阻塞功能, 且CSocket 通過與CSocketFile 和Carchive 一起使用來管理對象數(shù)據(jù)的發(fā)送和接收, 使發(fā)送數(shù)據(jù)和操作變得簡單明了 系統(tǒng)功能設(shè)計(jì) 客戶端功能程序設(shè)計(jì)首先介紹客戶端的用戶登錄窗體,輸入用戶名和服務(wù)器ip地址后進(jìn)入聊天室。 MFC Windows Socket 類包括CAsyncSocket 和CSocket 類。采用服務(wù)器與客戶端模式。界面友好:用戶界面是聊天工具與主要環(huán)節(jié),所以,應(yīng)充分考慮用戶的習(xí)慣和喜好,以方便用戶使用為原則。圖1面向連接的Socket 工作流程圖系統(tǒng)穩(wěn)定性:在設(shè)計(jì)該系統(tǒng)時(shí),很重要的一個(gè)問題就是系統(tǒng)的長期穩(wěn)定運(yùn)行,因?yàn)榭蛻舳丝赡芎芏鄠€(gè),考慮到系統(tǒng)的運(yùn)行環(huán)境等條件,必須從系統(tǒng)分析的高度給與足夠重視,保證服務(wù)器能夠較長時(shí)間的運(yùn)行系統(tǒng)健壯性:系統(tǒng)需要長期穩(wěn)定地運(yùn)行,而用戶在日常的工作中要進(jìn)行各種各樣的操作,難免會產(chǎn)生各種各樣的誤操作和錯(cuò)誤,這就打破了本系統(tǒng)的正常運(yùn)行流程,可能導(dǎo)致預(yù)想不到的后果。 開發(fā)及運(yùn)行環(huán)境硬件平臺:3) CPU:P4 。VC++是Windows平臺上的C++編程環(huán)境,學(xué)習(xí)VC要了解很多Windows平臺的特性并且還要掌握MFC、ATL、COM等的知識,難度比較大。 傳輸層:在此層中,它提供了節(jié)點(diǎn)間的數(shù)據(jù)傳送服務(wù),如傳輸控制協(xié)議(TCP)、用戶數(shù)據(jù)報(bào)協(xié)議(UDP)等,TCP和UDP給數(shù)據(jù)包加入傳輸數(shù)據(jù)并把它傳輸?shù)较乱粚又?,這一層負(fù)責(zé)傳送數(shù)據(jù),并且確定數(shù)據(jù)已被送達(dá)并接收。該模型的目的是使各種硬件在相同的層次上相互通信。在Windows 系統(tǒng)中, 如果一個(gè)函數(shù)長時(shí)間沒有返回值, 系統(tǒng)就很難為其他的程序分配出運(yùn)行時(shí)間, 常見的現(xiàn)象就是對輸入沒有響應(yīng), 刷屏緩慢, 系統(tǒng)反應(yīng)遲鈍等。在網(wǎng)絡(luò)通信中, 由于網(wǎng)絡(luò)擁擠或一次發(fā)送的數(shù)據(jù)量過大等原因, 經(jīng)常會發(fā)生交換的數(shù)據(jù)在短時(shí)間內(nèi)不能傳送完、收發(fā)數(shù)據(jù)的函數(shù)不能返回的現(xiàn)象, 這種現(xiàn)象叫阻塞。在這種類型的Socket 工作過程中,必須首先啟動(dòng)服務(wù)器端,通過調(diào)用socket()函數(shù)建立一個(gè)socket 對象, 然后調(diào)用bind()函數(shù)將該socket對象和本地網(wǎng)絡(luò)地址綁定到一起,再調(diào)用listen()函數(shù)使該socket對象處于偵聽狀態(tài),并規(guī)定它的最大請求的數(shù)量;之后要—直等到客戶機(jī)有連接請求的時(shí)候服務(wù)器才會再次被激活;收到客戶機(jī)請求以后, 服務(wù)器調(diào)用accept()函數(shù)來決定是否接受該連接。其特點(diǎn)是通信可靠, 對數(shù)據(jù)有校驗(yàn)和重發(fā)的機(jī)制, 通常用作數(shù)據(jù)文件的傳輸, 如FTP、TELNET等。 技術(shù)分析 Socket 編程的相關(guān)知識與技術(shù)Socket 進(jìn)行網(wǎng)絡(luò)通信有兩種主要的方式。8) 客戶端操作,用戶登錄,進(jìn)入聊天室。網(wǎng)絡(luò)的距離掩蓋了真實(shí)的缺點(diǎn),容易產(chǎn)生美感。(4)平等性。網(wǎng)絡(luò)聊天接近于現(xiàn)實(shí)生活的最大量交流,是一種面對面的共時(shí)態(tài)的直接交流。(2)超時(shí)空。在Windows 環(huán)境下開發(fā)網(wǎng)絡(luò)應(yīng)用程序, 通常都是使用Microsoft的網(wǎng)絡(luò)編程接口, 即Windows 套接字Windows Socket( 簡稱Winsock), 中的一組API 中,用于在網(wǎng)絡(luò)上傳輸數(shù)據(jù)和交換信息, 編程人員需要熟悉和掌握相關(guān)的網(wǎng)絡(luò)協(xié)議、系統(tǒng)的底層知識以及網(wǎng)絡(luò)軟硬件技術(shù), 因而Winsock 編程相當(dāng)復(fù)雜。本程序采用的協(xié)議就是TCP協(xié)議。UDP是無連接協(xié)議。4 結(jié)束語 147 致謝 15參考文獻(xiàn) 151 引言Internet上的聊天室一向是一個(gè)吸引人的地方,多用C語言或是web網(wǎng)絡(luò)語言進(jìn)行設(shè)計(jì)。TCP/ IP 協(xié)議 通信編程 VC++Abstract Socke interface is a API of TCP/ IP network and Winsock is another API which is base of the model of Socket ,This article discuss a service mechanismof puter data munications, providing a means of achieve puter munications in networks environment , analyzes the system construction , position and function of TCP/ IP protocol , and realization mechanism intermunication between isomerous networks through TCP/ IP protocols. The paper also analyzes two kinds of munication functions provided by TCP/ IP protocols , and proposes their different application occasions dialectically .this article use takes fundamentally with the VC++ language,in detail introduced this management system management system performance from system demand analysis, system analysis, detailed design entire performance history .. Finally , the paper gives programming models and realization keys of developing munication programs , which will provide some reference value for users who develop application programs.Key words :network TCP/ IP protocols munication program VC++摘要 1Abstract 11 引言 32系統(tǒng)分析 4 需求分析 4 技術(shù)分析 4 Socket 編程的相關(guān)知識與技術(shù) 4 程序語言的選擇 5 5 開發(fā)及運(yùn)行環(huán)境 5 6 6 6 7 7 錯(cuò)誤!未定義書簽。本聊天工具使用VC++語言和較成熟的微軟的mfc71作為開發(fā)語言,本文詳細(xì)介紹了本聊天工具的開發(fā)過程。感謝在大學(xué)四年的學(xué)習(xí)生活中所有關(guān)心和幫助過我的各位老師和同學(xué)。通過本次畢業(yè)設(shè)計(jì),我也感受到了開源的方便,遇到什么問題,上網(wǎng)一查,就知道該怎么弄了,以前做個(gè)課程設(shè)計(jì)都是怕別人和我的一樣,不愿意給別人看,現(xiàn)在知道了程序弄不出來是多么的著急,學(xué)習(xí)都是相互的,本次畢業(yè)設(shè)計(jì)是我工作前一次很好的演練和實(shí)踐的機(jī)會,是培養(yǎng)獨(dú)立思考問題和自學(xué)能力的鍛煉,使我意識到必須努力學(xué)習(xí)才能才工作中體現(xiàn)自己的價(jià)值,適應(yīng)社會的需要。無論具體的協(xié)議是對稱的或是非對稱的, 當(dāng)服務(wù)被提供時(shí)必然存在客戶進(jìn)程和服務(wù)進(jìn)程。根據(jù)不同的實(shí)際情況, 協(xié)議可能是對稱的或非對稱的。互聯(lián)網(wǎng)的大多數(shù)網(wǎng)站都建有聊天室, 并且有專業(yè)聊天網(wǎng)站提供聊天服務(wù)。 m_pClientRequestFile(msgRequest)。 DWORD dwStartTick = GetTickCount()。 = (iSel)。 return。 CString strClientPath = ()。 if(iSel == 1) return。因此,不能用類似于for 的循環(huán)語句來實(shí)現(xiàn)對多組數(shù)據(jù)的發(fā)送,更不能用循環(huán)語句來接收數(shù)據(jù)。}當(dāng)有很多用戶進(jìn)入聊天室后,在聊天對象中,選擇想要聊天的人名,勾選二人世界,在聊天信息中,輸入信息,單擊發(fā)送信息。 (pDoc).Format(%d,%d,%d,i1,i2,i3)。 pDoc=strText。 pDoc=pDocm_strHandle。CString ll。 CString strText。派生類CClientSocket 的回調(diào)函數(shù)OnReceive()與接收每一個(gè)已連接的數(shù)據(jù)傳輸。本實(shí)驗(yàn)采用上述方式實(shí)現(xiàn)廣播聊天、聊天室聊天、二人私聊、文件傳輸四個(gè)功能 服務(wù)端程序設(shè)計(jì)啟動(dòng)服務(wù)端后進(jìn)入張三 **時(shí)間 進(jìn)入聊天室李四 **時(shí)間 進(jìn)入聊天室在線用戶:刪除退出顯示所有在線用戶,選擇某用戶后可以進(jìn)行踢線操作。CSocket 類的使用比CAsynCSocket 類更加容易, 它繼承了CAsyncSocket 類的許多封裝了API 的成員函數(shù), 并且管理了通信的大多數(shù)方面, 這使得用戶從原來不得不使用原始API 或者CAsyncSocket 類的煩雜的工作中解脫出來??蛻舳撕喕癁椋孩僭O(shè)置服務(wù)器地址r要連接的地址②設(shè)置連接是所用到的端口③發(fā)送連接請求④建立連接成功⑤可以發(fā)送和接收數(shù)據(jù)⑥不用了就關(guān)閉Socket連接。2) 服務(wù)端功能:顯示所有在線用戶,選擇某用戶后可以進(jìn)行刪除操作客戶端功能模塊圖客戶端廣播聊天私人聊天聊天室聊天文件傳輸圖2 客戶端功能模塊 系統(tǒng)設(shè)計(jì)的原理本程序基TCP/IP協(xié)議。只有建立了穩(wěn)定的模型和良好的數(shù)據(jù)接口,才能保證系統(tǒng)具有良好的適應(yīng)性。2) 開發(fā)語言:VC++3) 開發(fā)平臺:Visual Studio 20034) 分辨率:最佳效果1024768像素本次畢業(yè)采用了面向連接的數(shù)據(jù)流,即基于TCP協(xié)議的連接方式,其工作流程如圖1 所示。VC++應(yīng)用程序的開發(fā)主要有兩種模式,一種是WIN API方式,另一種則是MFC方式,傳統(tǒng)的WIN API開發(fā)方式比較繁瑣,而MFC則是對WIN API再次封裝,所以MFC相對于WIN API開發(fā)更具備效率優(yōu)勢,但為了對WINDOWS開發(fā)有一個(gè)較為全面細(xì)致的認(rèn)識,筆者在這里還是以講解WIN API的相關(guān)內(nèi)容為主線。 程序語言的選擇本系統(tǒng)采用VC++.NET 2003作為程序開發(fā)語言。這4層分別為: 應(yīng)用層:應(yīng)用程序間溝通的層,如簡單電子郵件傳輸(SMTP)、文件傳輸協(xié)議(FTP)、網(wǎng)絡(luò)遠(yuǎn)程訪問協(xié)議(Telnet)等。傳統(tǒng)的開放式系統(tǒng)互連參考模型,是一種通信協(xié)議的7層抽象的參考模型,其中每一層執(zhí)行某一特定任務(wù)。阻塞方式是UNIX 中Socket 工作的默認(rèn)方式, 可是在Windows 系統(tǒng)中這種方式是無法容忍的。 一旦數(shù)據(jù)傳送結(jié)束, 雙方都必須關(guān)閉初始創(chuàng)建的socket 對象。面向連接的Socket工作中有比較嚴(yán)格的操作次序。只有兩端的程序成功地進(jìn)行了握手之后才能開始傳輸數(shù)據(jù)。6) 系統(tǒng)要體現(xiàn)界面友好,使用方便的特性。2系統(tǒng)分析 需求分析通過調(diào)查研究,要求系統(tǒng)滿足有以下功能;1) 由于操作人員的計(jì)算機(jī)知識普遍較差,要求有良好的人機(jī)界面。(5)距離感。網(wǎng)絡(luò)聊天工具還可以與移動(dòng)通訊終端、IP 電話網(wǎng)、無線尋呼等多種通訊方式相連,是一種方便、實(shí)用、高效的即時(shí)通信工具。(3)互動(dòng)性。作為一種即時(shí)通信工具,一般聊天工具支持顯示朋友在線、尋呼、聊天、即時(shí)傳送文字、語音和文件等功能,支持視頻功能的視頻。在優(yōu)良的網(wǎng)絡(luò)環(huán)境, UDP 的工作效率較TCP 協(xié)議要高。則應(yīng)該采用TCP協(xié)議。保證數(shù)據(jù)傳送安全到達(dá)目的地。 錯(cuò)誤!未定義書簽。關(guān)鍵詞: 網(wǎng)絡(luò)。對TCP/ IP 協(xié)議提供的兩種通信功能進(jìn)行了分析,辯證地提出了它們不同的應(yīng)用場合。本文通過論述了Windows 環(huán)境下的實(shí)現(xiàn)計(jì)算機(jī)數(shù)據(jù)傳輸服務(wù)的機(jī)制,提供了一種網(wǎng)絡(luò)環(huán)境下實(shí)現(xiàn)計(jì)算機(jī)通信的手段,分析了TCP/ IP 協(xié)議的體系結(jié)構(gòu)、組成與功能以及通過TCP/ IP 協(xié)議實(shí)現(xiàn)異構(gòu)型網(wǎng)絡(luò)互連的機(jī)理。最后,給出了在TCP/ IP 基礎(chǔ)上開發(fā)通信應(yīng)用程序的編程模型和實(shí)現(xiàn)要點(diǎn),對用戶開發(fā)應(yīng)用程序有一定參考意義。 11 錯(cuò)誤!未定義書簽。TCP是有連接協(xié)議.它要求計(jì)算機(jī)進(jìn)行對話時(shí)必須先建立連接。要進(jìn)行實(shí)時(shí)會話。TCP 協(xié)議屬于“ 面向連接,可靠傳輸”的類型, 面向連接的傳輸意味著在進(jìn)行通信以前, 需要在兩個(gè)系統(tǒng)之間建立邏輯連接, 在每個(gè)數(shù)據(jù)傳輸?shù)倪^程中都需要進(jìn)行應(yīng)答以保證數(shù)據(jù)包的完整, 這種方法可以保證數(shù)據(jù)傳輸?shù)目煽啃?但所需的網(wǎng)絡(luò)開銷較大;UDP 協(xié)議屬于“ 面向無連接, 不可靠傳輸”的類型, 該協(xié)議只負(fù)責(zé)接收和傳送上層協(xié)議傳遞的消息, 它本身不做任何的檢測、修改與應(yīng)答, 網(wǎng)絡(luò)開銷一般要小于TCP協(xié)議。 網(wǎng)絡(luò)聊天工具的特性(1)多功能。這種散點(diǎn)式的人際傳播對于整個(gè)組織機(jī)構(gòu)的健康運(yùn)作有著不可低估的作用??梢酝ㄟ^留言,即使對方不在線,也可以在上線的同時(shí)第一時(shí)間收到信息。正是這些特性,可以使大學(xué)生暫時(shí)掩蓋自身任何的缺點(diǎn)和不足,可以擺脫現(xiàn)實(shí)交往中容易產(chǎn)生的各種矛盾,更不必顧及輿論的壓力而使得師生