牟 亮
(中國(guó)聯(lián)通南京分公司 江蘇南京 210000)
數(shù)據(jù)通訊是利用數(shù)據(jù)傳輸技術(shù)在終端傳遞數(shù)據(jù)信息的通信方式。通過(guò)智能終端與計(jì)算機(jī)通信,數(shù)據(jù)通信中傳遞信息以二進(jìn)制數(shù)據(jù)形式表現(xiàn)。即時(shí)通信軟件體現(xiàn)卓越的商務(wù)通信功能,以高效靈活便捷等特點(diǎn)得到用戶(hù)的青睞,即時(shí)通信成為推動(dòng)電商發(fā)展的重要力量。當(dāng)前,網(wǎng)絡(luò)上有ICQ等各種尋呼軟件,方便人們的相互聯(lián)系。當(dāng)前企事業(yè)單位建立局域網(wǎng),可以通過(guò)文件共享方式通訊。但局域網(wǎng)中網(wǎng)上鄰居不知道對(duì)象機(jī)器資源。局域網(wǎng)中通過(guò)ICQ可以實(shí)現(xiàn)便捷的聯(lián)絡(luò),進(jìn)行發(fā)布消息等。方便用戶(hù)交流,節(jié)省硬件資源配置。
TCP/IP初步架構(gòu)出現(xiàn)源于美國(guó)國(guó)防部DARPA提出研究計(jì)劃,希望通過(guò)通信控制處理機(jī)在戰(zhàn)爭(zhēng)中遭到攻擊損壞能正常工作,希望適應(yīng)從文件傳遞各種應(yīng)用需求,要求靈活的網(wǎng)絡(luò)體系結(jié)構(gòu)。最初APRANET使用租用線(xiàn)路,ARPANET最初開(kāi)發(fā)網(wǎng)絡(luò)協(xié)議NCP因通信可靠性較差,出現(xiàn)了很多問(wèn)題[1]。TCP協(xié)議非OSI標(biāo)準(zhǔn),但被公認(rèn)為當(dāng)前工業(yè)標(biāo)準(zhǔn)。
1974年Kahn定義TCP/IP參考模型,1985年Leiner等人對(duì)模型進(jìn)行研究。當(dāng)前,Internet實(shí)現(xiàn)商業(yè)化,但最初質(zhì)量標(biāo)準(zhǔn)依然必需。特性包括自動(dòng)檢測(cè)等,TCP/IP是開(kāi)放式通信協(xié)議,無(wú)論設(shè)備物理特征差異都可進(jìn)行通信。TCP/IP是分層模型,TCP/IP參考模型側(cè)重互聯(lián)設(shè)備數(shù)據(jù)傳送,TCP/IP通過(guò)解釋功能層次分布實(shí)現(xiàn)。TCP/IP是把因特網(wǎng)系統(tǒng)聯(lián)系的協(xié)議組,IP是TCP/IP協(xié)議中的重要協(xié)議,可以實(shí)現(xiàn)無(wú)連接數(shù)據(jù)傳送功能。IP協(xié)議主要通過(guò)IP接收與發(fā)送函數(shù)實(shí)現(xiàn)。
大多數(shù)TCP/IP協(xié)議中采用差錯(cuò)檢驗(yàn)法為校驗(yàn)和,可防止分組在傳輸中受到損傷,接收端對(duì)整個(gè)分組重復(fù)進(jìn)行計(jì)算。TCP是傳輸層常用的協(xié)議,可以調(diào)可靠數(shù)據(jù)傳輸服務(wù)[2]。TCP協(xié)議實(shí)現(xiàn)是TCP/IP協(xié)議棧中最復(fù)雜的,采取連接建立與關(guān)閉機(jī)制,數(shù)據(jù)包確認(rèn)機(jī)制等保證其可靠性。TCP連接建立后雙方可相互傳遞數(shù)據(jù),TCP發(fā)送數(shù)據(jù)包后接收到發(fā)送確認(rèn)包才能確認(rèn)成功發(fā)送。
TCP是面向連接的協(xié)議,程序交換數(shù)據(jù)前需建立連接。程序服務(wù)方監(jiān)聽(tīng),連接建立后可收發(fā)信息。應(yīng)用程序通訊時(shí)建立Socket,必須建立Socket連接進(jìn)行信息交換。Socket地址包括IP地址與協(xié)議。協(xié)議標(biāo)識(shí)下層使用協(xié)議。通訊客戶(hù)建立Socket服務(wù)方等待客戶(hù)發(fā)送連接請(qǐng)求,雙方形成虛電路。C/S模型課利用兩端硬件環(huán)境優(yōu)勢(shì),服務(wù)器處于系統(tǒng)中心地位,服務(wù)器被動(dòng)接受客戶(hù)連接。
Visual是微軟公司推出的應(yīng)用程序開(kāi)發(fā)工具,語(yǔ)言特點(diǎn)體現(xiàn)在結(jié)構(gòu)化程序設(shè)計(jì);提供易用的應(yīng)用程序集成開(kāi)發(fā)環(huán)境。文本即時(shí)通信分為服務(wù)器與客戶(hù)端模型,服務(wù)進(jìn)程處于休眠狀態(tài),服務(wù)程序?yàn)榭蛻?hù)端創(chuàng)建工作線(xiàn)程,完成與客戶(hù)端的請(qǐng)求服務(wù)??蛻?hù)端模型設(shè)計(jì)數(shù)據(jù)連接線(xiàn)程,負(fù)責(zé)客戶(hù)端數(shù)據(jù)收發(fā)操作??蛻?hù)端等待服務(wù)器端連接反饋。創(chuàng)建服務(wù)端口號(hào)偵聽(tīng)是否有客戶(hù)連接。客戶(hù)向服務(wù)器發(fā)送數(shù)據(jù)后,在事件中接收數(shù)據(jù)。采用GetData方法接收。向客戶(hù)發(fā)送數(shù)據(jù)調(diào)用SendData方法,客戶(hù)端收發(fā)數(shù)據(jù)用SendData法實(shí)現(xiàn)功能。
服務(wù)器提供接收客戶(hù)端文件功能,客戶(hù)端發(fā)送請(qǐng)求信息后,服務(wù)器判斷是否存在文件,將信息發(fā)送至客戶(hù)端。服務(wù)器在文件發(fā)送操作中,首先發(fā)送文件信息給客戶(hù)端,包括文件大小等。工作線(xiàn)從指定位置讀取。用Open語(yǔ)句打開(kāi)傳送文件轉(zhuǎn)換為二進(jìn)制。Filehandle=FreeFile cmdsend.Enabled=False MsgBox.定義function SendChunk,分別發(fā)送.Public Function SendChunk()If WinsockSend.State<>sckConnected Then Exit Function Get#fiehandle.mybyte,經(jīng)測(cè)試表明數(shù)據(jù)通訊系統(tǒng)性能達(dá)到要求。服務(wù)器可在收到請(qǐng)求后正常工作,文件傳輸中服務(wù)器CPU占用率較高。
本文探討基于TCP/IP協(xié)議的通信系統(tǒng)研究,采用客戶(hù)/服務(wù)器模型,提高網(wǎng)絡(luò)利用率。系統(tǒng)可實(shí)時(shí)將數(shù)據(jù)傳送到服務(wù)器端,熟悉文件傳輸功能。設(shè)計(jì)特點(diǎn)體現(xiàn)在采用C/S模型設(shè)計(jì)方法;采用TCP/IP協(xié)議數(shù)據(jù)傳輸不易丟失;有利于系統(tǒng)開(kāi)發(fā)維護(hù)工作。