曹婧華,趙 飛,冉彥中
(1.吉林大學(xué)和平校區(qū)計(jì)算機(jī)教研室,吉林長(zhǎng)春 130062;2.吉林大學(xué)和平校區(qū)軍需科技學(xué)院,吉林長(zhǎng)春 130062)
局域網(wǎng)文件傳輸?shù)腄elphi編程實(shí)現(xiàn)
曹婧華1,趙 飛2,冉彥中1
(1.吉林大學(xué)和平校區(qū)計(jì)算機(jī)教研室,吉林長(zhǎng)春 130062;2.吉林大學(xué)和平校區(qū)軍需科技學(xué)院,吉林長(zhǎng)春 130062)
在研發(fā)開(kāi)放式計(jì)算機(jī)機(jī)房自動(dòng)化系統(tǒng)過(guò)程中,筆者采用客戶端-服務(wù)器(C/S)模式,基于TCP/IP協(xié)議,以Delphi7.0作為開(kāi)發(fā)平臺(tái),應(yīng)用Dephi7.0的TIdTCPServer組件和TIdTCPClient組件對(duì)局域網(wǎng)文件傳輸進(jìn)行有益嘗試,實(shí)現(xiàn)了按緩沖區(qū)大小劃分的文件流分段傳輸方式的服務(wù)器-客戶端局域網(wǎng)文件傳輸。機(jī)房實(shí)驗(yàn)結(jié)果表明,本文算法簡(jiǎn)單易用,具有推廣價(jià)值。
局域網(wǎng);文件流;TIdTCPServer組件;TIdTCPClient組件
通常機(jī)房的文件傳輸是在IE瀏覽器的地址欄用文件傳輸協(xié)議ftp實(shí)現(xiàn)的,ftp是TCP/IP[1]模型的應(yīng)用層協(xié)議,該協(xié)議運(yùn)行在傳輸層的TCP協(xié)議之上的,這種方法使用起來(lái)很不方便而且文件的傳輸速度較慢。在細(xì)致研究了TCP/IP協(xié)議以及Delphi710的線程通信組件[2]TIdTCPServer和TIdTCPClient之后,本文直接基于TCP/IP模型傳輸層的TCP協(xié)議,設(shè)計(jì)并實(shí)現(xiàn)了基于點(diǎn)對(duì)點(diǎn)的[3]、面向連接的、可靠[4]服務(wù)器至客戶端的文件傳輸。
TCP/IP參考模型分為四層:應(yīng)用層 (Application Layer)、傳輸層 (Transport Layer)、網(wǎng)絡(luò)層 (Internet Lay2 er)、鏈路層 (Link Layer)。應(yīng)用程序處在應(yīng)用層,應(yīng)用層下面分別是傳輸層、網(wǎng)絡(luò)層、鏈路層。傳輸層通過(guò)兩種核心協(xié)議TCP和UDP為應(yīng)用層提供會(huì)話和數(shù)據(jù)報(bào)通信服務(wù),其中TCP協(xié)議是一種面向連接的可靠傳輸協(xié)議,其工作原理是兩個(gè)進(jìn)程在利用TCP協(xié)議通信前必須先建立TCP協(xié)議連接,本文是基于TCP協(xié)議的面向連接的通信方式。
本文的局域網(wǎng)數(shù)據(jù)傳輸系統(tǒng)通過(guò)Delphi 710的網(wǎng)絡(luò)通信組件INDY建立客戶端與管理端之間的TCP連接。主要用到了IdTCPServer和 IdTCPClient兩個(gè)組件,其中IdTCPClient封裝了一個(gè)包括Socket支持的完整的TCP客戶端程序,IdTCPServer封裝了一個(gè)完整的多線程TCP服務(wù)器端程序。它使用一個(gè)或者多個(gè)線程來(lái)接收客戶端的連接。
利用TCP協(xié)議連接服務(wù)器和客戶機(jī)之后,服務(wù)器端讀入待發(fā)送文件建立文件流,進(jìn)入監(jiān)聽(tīng)狀態(tài),接到客戶端發(fā)送信號(hào)后開(kāi)始傳輸。服務(wù)器根據(jù)客戶端發(fā)送的當(dāng)前文件流傳輸位置按接收緩沖區(qū)大小對(duì)預(yù)傳輸文件分塊發(fā)送給客戶端,客戶端接收后保存到接收文件流,直到整個(gè)文件發(fā)送完畢。其具體設(shè)計(jì)按服務(wù)器和客戶端進(jìn)行模塊劃分并進(jìn)行編碼實(shí)現(xiàn),具體的功能界面、代碼設(shè)計(jì)及注釋文檔如下。
客戶端界面圖如圖1。在客戶端窗體上放置一個(gè)TIdTCPClient組件,用于和服務(wù)器端的連接。一個(gè)文件保存對(duì)話框,用于保存從服務(wù)器傳來(lái)的文件。兩個(gè)文本框,一個(gè)文本框用于輸入服務(wù)器的地址,另一個(gè)文本框用于設(shè)置組件的端口號(hào)。一個(gè)數(shù)據(jù)接收按鈕,其單擊事件代碼實(shí)現(xiàn)向服務(wù)器提交發(fā)送數(shù)據(jù)請(qǐng)求并接收由服務(wù)器發(fā)送的數(shù)據(jù)。一個(gè)狀態(tài)按鈕,表示文件傳輸情況。
Client.Button1單擊事件的具體代碼及其功能注釋如下:
圖1 客戶端界面圖
服務(wù)器端界面圖如圖2。在服務(wù)器端窗體上放置了一個(gè)IdTCPServer組件,用于監(jiān)聽(tīng)客戶端的發(fā)送請(qǐng)求。一個(gè)文件打開(kāi)對(duì)話框,用于打開(kāi)要傳的文件。兩個(gè)文本框,一個(gè)用于輸入要傳文件在服務(wù)器上的地址,另一個(gè)用于設(shè)置組件的端口號(hào)。一個(gè)傳輸按鈕開(kāi)始向客戶端發(fā)送數(shù)據(jù),一個(gè)狀態(tài)條表示文件傳輸?shù)那闆r。
圖2 服務(wù)器端界面圖
機(jī)房管理中,數(shù)據(jù)傳輸是一個(gè)非常實(shí)際和常遇問(wèn)題。在長(zhǎng)期的應(yīng)用實(shí)踐過(guò)程中發(fā)現(xiàn)基于TCP的Sock2 et[5-10]通信保證了網(wǎng)絡(luò)通信的準(zhǔn)確性和及時(shí)性。Delphi是一種優(yōu)秀的面向?qū)ο缶幊陶Z(yǔ)言,由于其具有的可移植性、多線程、簡(jiǎn)單性、安全性等優(yōu)點(diǎn)而廣泛應(yīng)用于網(wǎng)絡(luò)開(kāi)發(fā)環(huán)境中。本文的主要功能由Delphi的TIdTCPServer和TIdTCPClient實(shí)現(xiàn),通過(guò)編程,增強(qiáng)了對(duì)TCP/IP協(xié)議的理解,認(rèn)識(shí)了套接字的編程思想,實(shí)現(xiàn)了文件流的分段傳輸,解決了局域網(wǎng)C/S模式下的數(shù)據(jù)傳輸。
[1]陳忠菊.基于和協(xié)議的通信編程Delphi TCP/IP網(wǎng)絡(luò)與通信[J].電腦編程技巧與維護(hù),2009(2).
[2]馮秀彥.基于Delphi Socket組件的局域網(wǎng)通信[J].石家莊職業(yè)技術(shù)學(xué)院學(xué)報(bào),2008(4):33-34.
[3]白羽,洪飛.基于P2P SIP協(xié)議的即時(shí)通信系統(tǒng)[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2009(2):14-17.
[4]張巖.Delphi下的點(diǎn)對(duì)點(diǎn)聊天工具編程[J].電腦知識(shí)與技術(shù),2009(5):1239.
[5]羅亞非.基于TCP的Socket多線程通信[J].電腦知識(shí)與技術(shù),2009(3):22-24.
[6]李新良,羅戈夕.用Socket的編程機(jī)制實(shí)現(xiàn)網(wǎng)上交談[J].電腦知識(shí)與技術(shù),2006(10):29-30.
[7]王靜,曲鳳娟.基于Socket的多用戶并發(fā)通信的設(shè)計(jì)[J].福建電腦,2007(3):164.
[8]陳小艷.用Java實(shí)現(xiàn)多線程Socket通信[J].湖北廣播電視大學(xué)學(xué)報(bào),2008(1):157-158.
[9]徐震.基于TCP/IP的半導(dǎo)體封裝設(shè)備之間數(shù)據(jù)通信的研究[D].廣州:廣東工業(yè)大學(xué),2007.
[10]何進(jìn),謝松巍.基于Socket的TCP/IP網(wǎng)絡(luò)通訊模式研究[J].計(jì)算機(jī)應(yīng)用研究,2001(8).
The Realization of Delphi Programming for File Transfer in Local Area Network
CAO Jing-hua1,ZHAO Fei2,RAN Yan-zhong1
(1.Department of Computer,Heping Campus Jilin University,Changchun 130062,China;2.College of Quartermaster Technology,Changchun 130062,China)
In the process of developing automation systemfor open computer lab,this paper used client-server(C/S)mode based on TCP/IP protocol.It took Delphi7.0 as a development platform and attempted to transfer files in local area network(LAN)using the TIdTCPServer components and TIdTCPClient components of Dephi7.0,and finally realized the transfer of files in LAN based on C/S mode.The experimental results showed that this algorithm is easy to use,and of popularization value.
local area network;file stream;TIdTCPServer components;TIdTCPClient components
TP312
A
1008-178X(2011)01-0040-03
2010-12-19
吉林省教育廳科技計(jì)劃項(xiàng)目 (吉教科合字 [2006J75]);吉林大學(xué)青年科研基金項(xiàng)目 (091167)。
曹婧華 (1978-),女,吉林公主嶺人,吉林大學(xué)和平校區(qū)計(jì)算機(jī)教研室講師,碩士,從事計(jì)算機(jī)網(wǎng)絡(luò)研究。