【正文】
ther said: 39。You39。Are you going to tell me that you have not got a certificate?39。Nothing much!39。Oh! Oh! Oh! ...39。 When she came — when I saw her, I wanted to kill myself. I knew they would never approve her, although it39。, for as secret societies were the fashion,it was thought proper to have one, and as all of the girls admired Dickens, they called themselves the Pickw ic k Club. With a f ew interruptions, they had kept this up for a year, and met every Saturday evening in the big garret, on which occasions the ceremonies were as follows: Three chairs were arranged in a row before a table on which was a lamp, also four white badges, with a big `.39。em in Chiny, and so she might, for the girls39。 Aunt Harriet went on crying. My mother let the sobs almost die away before she said: 39。 39。 It39。 My mother39。 said Aunt Harriet, but there was something wrong about the way she said it. Even I knew that. She hurried on: 39。s lovely, too, isn39。 said Aunt Harriet39。Why, Harriet!39。 my father was perfectly well aware of that, too. At last Petra39。 7 致謝 我的作品 基于 TCP/IP 的網(wǎng)絡(luò)聊天工具的設(shè)計(jì)與實(shí)現(xiàn) ,達(dá)到了我預(yù)先的效果。一個(gè)服務(wù)程序通常在一個(gè)眾所周知地地址監(jiān)聽客戶對服務(wù)地請求 , 也就是說 , 服務(wù)進(jìn)程一直處于休眠狀態(tài) , 直到一個(gè)客戶對這個(gè)服務(wù)地址提出連接請求。進(jìn)入 20 世紀(jì) 90 年代后 , 隨著計(jì)算機(jī)和網(wǎng)絡(luò)技術(shù)的發(fā)展 ,很多數(shù)據(jù)處理系統(tǒng)都采用開放系統(tǒng)結(jié)構(gòu)的客戶機(jī) /服務(wù)器 (Client/Server)網(wǎng)絡(luò)模型 ,即客戶機(jī)向服務(wù)器提交請求 ,服務(wù)器對請求做相應(yīng)的處理兵執(zhí)行被請求的任務(wù) ,然后將結(jié)構(gòu)返回給客戶機(jī)。 char sStartTick[20]。 } ()。 CString strFileName = (iSel, 0)。在通信程序編寫中使用了 MFC 中的 CSocket 類,通過修改發(fā)送緩沖區(qū)和接收緩沖區(qū)的大小,解決了利用 Winsock 發(fā)送和接收大數(shù)據(jù)量文件的難題,滿足了系統(tǒng)快速傳輸要求 。 BYTE i3=GetBValue(pDocclr)。 pDoc=ll。 ASSERT_VALID(pDoc)。 } ()。 Message1()。 for(POSITION posname=()。 } 5 系統(tǒng)功能實(shí)現(xiàn) 服務(wù)器端有個(gè) CSocket 的派生類 CListeningSocket對象指針來監(jiān)聽端口等待用戶登陸 , 而用另一個(gè) CSocket 的派生類對象 CClientSocket 的指針組來處理和每一個(gè)客戶端的交互過程。 pParam = 。 char sServerPath[128]。 int iPort。 本實(shí)驗(yàn)采用 VS 2020 為平臺(tái)利用 VC++開發(fā)語言進(jìn)行程序編寫。 MFC Windows Socket 類 包括 CAsyncSocket 和 CSocket 類 。 界面友好:用戶界面是聊天工具與主要環(huán)節(jié),所以,應(yīng)充分考慮用戶的習(xí)慣和喜好,以方便用戶使用為原則。 開發(fā)及運(yùn)行環(huán)境 硬件平臺(tái): 1) CPU: P4 。 VC 作為一個(gè)主流的開發(fā)平臺(tái)一直深受編程愛好者的喜愛,但是很多人卻對它的入門感到難于上青天,究其原因主要是大家對他錯(cuò)誤的認(rèn)識(shí)造成的,嚴(yán)格的來說 VC++不是門語言,雖然它和 C++之間有密切的關(guān)系 ,如果形象點(diǎn)比喻的話,可以 C++看作為一種 “工業(yè)標(biāo)準(zhǔn) ”,而 VC++則 是某種操作系統(tǒng)平臺(tái)下的 “廠商標(biāo)準(zhǔn) ”,而 “廠商標(biāo)準(zhǔn) ”是在遵循 “工業(yè)標(biāo)準(zhǔn) ”的前提下擴(kuò)展而來的。 套接字 應(yīng)用程序 套接子仿真器 傳輸驅(qū)動(dòng)程序接口 傳輸協(xié)議 ( TCP/IP) 通信時(shí)主要可以分為兩個(gè)部分 :一個(gè)部分是用于傳送控制信息,例如發(fā)送文件的請求,文件的名稱、大小等,由于這方面的數(shù)據(jù)量比較小,為了方便起見 ,我們 采用了 MFC 所提供的 CSocket 類的串行化技術(shù)來實(shí)現(xiàn) ; 傳輸通道 采用 Windows 平臺(tái)上的 WinSock[1 ] 是在 TCP/ IP 協(xié)議基礎(chǔ)上的一種網(wǎng)絡(luò)編程接口。于是 ,在 90 年代初 , Sun Micro system ,Microsoft , JSB Corporation , FTP Software 和 Micro dyne 公司聯(lián)合起來共同制定了 Windows Sockets ( 簡稱WinSock ) 規(guī)范 , 使 Windows下的 Socket 應(yīng)用開發(fā)規(guī)范化和標(biāo)準(zhǔn)化。例如 ,如果發(fā)送進(jìn)程將 4 塊 512 字節(jié)的數(shù)據(jù)寫到 TCP 流上 ,那么這些數(shù)據(jù)可能按 4 個(gè) 512 字節(jié)的數(shù)據(jù)塊 , 或者 2 個(gè)端口號(hào) 1 端口號(hào) 2 端口號(hào) 3 端口號(hào) 4 端口號(hào) 1 端口號(hào) 2 端口號(hào) 3 端口號(hào) 4 主機(jī)地址 1 主機(jī)地址 2 程序 2 程序 1 程序 2 程序 1 面向連接 無連接 1024字節(jié)的數(shù)據(jù)塊 ,以及一個(gè) 2 048 字節(jié)的數(shù)據(jù)塊和其它一些方式傳送到接收進(jìn)程。換言之 ,兩個(gè)或更多個(gè)連接可能同時(shí)連接到同一個(gè)套接字上。 傳輸層:在此層中,它提供了節(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á)并接收。 TCP/ IP 協(xié)議用主機(jī)地址標(biāo)識(shí)網(wǎng)絡(luò)上的主機(jī) ,用端口號(hào)標(biāo)識(shí)主機(jī)上的程序 ,通信模式如圖 1 所示。在阻塞方式下 , 收發(fā)數(shù)據(jù)的函數(shù)在被調(diào)用后一直要到傳送完畢或者出錯(cuò)才能返回。數(shù)據(jù)報(bào)文方式由于取消了重發(fā)校驗(yàn)機(jī)制 ,能夠達(dá)到較高的通信速率 , 可以用作對數(shù)據(jù)可靠性要求不高的通信 , 如實(shí)時(shí)的語音、圖像轉(zhuǎn)送、廣播消息等。 4) 服務(wù)端操作,顯示所有在線用戶,選擇某用戶后可以進(jìn)行刪除操作 5) 系統(tǒng)退出。正是這些特性,可以使大學(xué)生暫時(shí)掩蓋自身任何的缺點(diǎn)和不足,可以擺脫現(xiàn)實(shí)交往中容易產(chǎn)生的各種矛盾,更不必顧及輿論的壓力而使得師生在交流過程中受到更少的束縛,最終使大學(xué)生在虛擬的網(wǎng)絡(luò)中能夠更輕松地面對友 (愛 )情,交往需求在網(wǎng)絡(luò)中得到充分的滿足。這種散點(diǎn)式的人際傳播對于整個(gè)組織機(jī)構(gòu)的健康運(yùn)作有著不可低估的作用。 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é)議。 TCP是有連接協(xié)議.它要求計(jì)算機(jī)進(jìn)行對話時(shí)必須先建立連接。本文通過論述了 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ī)理。 關(guān)鍵詞 : 網(wǎng)絡(luò) 。則應(yīng)該采用 TCP協(xié)議。作為一種即時(shí) 通信工具 ,一般聊天工具 支持顯示朋友在線、尋呼、聊天、即時(shí)傳送文字、語音和文件等功能,支持視頻功能的視頻 。網(wǎng)絡(luò)聊天工具還可以與移動(dòng)通訊終端、 IP 電話網(wǎng)、無線尋呼等多種通訊方式相連,是一種方便、實(shí)用、高效的即時(shí)通信工具。 2 系統(tǒng)分析 需求分析 通過調(diào)查研究,要求系統(tǒng)滿足有以下功能; 1) 由于操作人員的計(jì)算機(jī)知識(shí)普遍較差,要求有良好的人機(jī)界面。只有兩端的程序成功地進(jìn)行了握手之后才能開始傳輸數(shù)據(jù)。 一旦數(shù)據(jù)傳送結(jié)束 , 雙方都必須關(guān)閉初始創(chuàng)建的 socket 對象。流式套接字基于 TCP 協(xié)議 ,提供面向連接的服務(wù) 。這 7 層是 :物理層、數(shù)據(jù)鏈路層、網(wǎng)路層、傳輸層、話路層、表示層和應(yīng)用層。每個(gè)套接字有一個(gè)套接字序號(hào) (地址 ) ,它包含主機(jī)的 IP 地址以及一個(gè)主機(jī)本地的 16 位號(hào)碼 ,稱為端口。 TCP不支持多點(diǎn)播送或廣播。 基于 TCP/IP協(xié)議的接收套接字通信機(jī)制示意圖如下圖 2 圖 2 套接字通信機(jī)制示意圖 TCP/IP 協(xié)議下的 WinSock 編程 在 TCP/ IP 協(xié)議下 ,Socket 是一種極為重要的網(wǎng)絡(luò)編程接口。文件傳輸方法還有很多 ,但應(yīng)用在并行分步計(jì)算 ,并計(jì)算結(jié)果自動(dòng)進(jìn)行計(jì)算機(jī)間傳輸文件方面均不太好用 。 程序語言的選擇 本系統(tǒng)采用 VC++.NET 2020 作為程序開發(fā)語言。服務(wù)器收到連接請求后 ,通過調(diào)用 Accept方法在 2 臺(tái)計(jì)算機(jī)之間建立通信連接 。因此,在本系統(tǒng)的設(shè)計(jì)過程中,我們將 預(yù)先考慮各種各樣的誤操作及后果,采取相應(yīng)的預(yù)防措施,確保不產(chǎn)生災(zāi)難性的后果,保證系統(tǒng)的健壯性。選用 VC++程序設(shè)計(jì)語言。 客戶端 廣播聊天 私人聊天 聊天室聊天 文件傳輸 圖 4 客戶端登陸窗口 然后出現(xiàn)圖 4,客戶端聊天主窗體。 char sServerPath[128]。 char sServerPath[128]。 pParamiPort = m_iServerPort。 HANDLE h = CreateThread(NULL, 0, ThreadRequestFile, pParam, 0, amp。//創(chuàng)建客戶端 sock TRY//捕捉異常 { pSocketReceiveMsg(amp。 delsocket()。 if(i=0 amp。 ()。 CString ll。 pDoc=strText。 } 當(dāng)有很多用戶進(jìn)入聊天室后,在聊天對象中,選擇想要聊天的人名,勾選二人世界,在聊天信息中,輸入信息,單擊發(fā)送信息。 只要在添加需要傳送的文件,其可以顯示文件的大小和路徑: 接受文件: 單擊接受文件,打開文件傳輸窗體,雙擊需要接受的文件,選擇保存路徑,開始傳輸: 此功能用到的 主要 代碼 如下: void CClient_FileTransferDlg::OnDblclkListFilelist(NMHDR* pNMHDR, LRESULT* pResult) { // TODO: Add your control notification handler code here NMLISTVIEW* pListView = (NMLISTVIEW*)pNMHDR。 BOOL bOpen = (strClientPath, CFile::modeCreate|CFile::modeWrite, NULL)。 strcpy(, (0))。} 6 結(jié)束語 如今 , 人們不僅可以在網(wǎng)上查詢自己需要的資源 , 而且可以通過網(wǎng)絡(luò)進(jìn)行實(shí)時(shí)的溝通 , 從實(shí)時(shí)性和有效性上都超過了用信件和 EMail, 并且在費(fèi)用上要低于電話。 在非對稱協(xié)議中一方被不可改變地認(rèn)為是主機(jī) , 而另一方則是從機(jī)。 Winsock 的最新版本不但支持 TCP/ IP 協(xié)議簇 ,而且還支持其它的通信協(xié)議 . 隨著 Windows 操作系統(tǒng)和 Inter 的普及 ,Winsock 作為網(wǎng)絡(luò)編程的新標(biāo)準(zhǔn) ,必將為計(jì)算機(jī)網(wǎng)絡(luò)開拓出更廣闊的應(yīng)用前景 。 the effort to be even formally polite nearly strangled him. Even then the inspector was not brisk. He dis mounted in a leisurely fashion, and strolled into the house, chatting about the weather. Father, red in the face, handed him over to Mary who took him along to mother39。 bedroom where my mother still lay in bed. It was a matter of chance, and strategy, too