曹婧華,趙 飛,冉彥中
(1.吉林大學和平校區(qū)計算機教研室,吉林長春 130062;2.吉林大學和平校區(qū)軍需科技學院,吉林長春 130062)
局域網(wǎng)文件傳輸?shù)腄elphi編程實現(xiàn)
曹婧華1,趙 飛2,冉彥中1
(1.吉林大學和平校區(qū)計算機教研室,吉林長春 130062;2.吉林大學和平校區(qū)軍需科技學院,吉林長春 130062)
在研發(fā)開放式計算機機房自動化系統(tǒng)過程中,筆者采用客戶端-服務器(C/S)模式,基于TCP/IP協(xié)議,以Delphi7.0作為開發(fā)平臺,應用Dephi7.0的TIdTCPServer組件和TIdTCPClient組件對局域網(wǎng)文件傳輸進行有益嘗試,實現(xiàn)了按緩沖區(qū)大小劃分的文件流分段傳輸方式的服務器-客戶端局域網(wǎng)文件傳輸。機房實驗結(jié)果表明,本文算法簡單易用,具有推廣價值。
局域網(wǎng);文件流;TIdTCPServer組件;TIdTCPClient組件
通常機房的文件傳輸是在IE瀏覽器的地址欄用文件傳輸協(xié)議ftp實現(xiàn)的,ftp是TCP/IP[1]模型的應用層協(xié)議,該協(xié)議運行在傳輸層的TCP協(xié)議之上的,這種方法使用起來很不方便而且文件的傳輸速度較慢。在細致研究了TCP/IP協(xié)議以及Delphi710的線程通信組件[2]TIdTCPServer和TIdTCPClient之后,本文直接基于TCP/IP模型傳輸層的TCP協(xié)議,設計并實現(xiàn)了基于點對點的[3]、面向連接的、可靠[4]服務器至客戶端的文件傳輸。
TCP/IP參考模型分為四層:應用層 (Application Layer)、傳輸層 (Transport Layer)、網(wǎng)絡層 (Internet Lay2 er)、鏈路層 (Link Layer)。應用程序處在應用層,應用層下面分別是傳輸層、網(wǎng)絡層、鏈路層。傳輸層通過兩種核心協(xié)議TCP和UDP為應用層提供會話和數(shù)據(jù)報通信服務,其中TCP協(xié)議是一種面向連接的可靠傳輸協(xié)議,其工作原理是兩個進程在利用TCP協(xié)議通信前必須先建立TCP協(xié)議連接,本文是基于TCP協(xié)議的面向連接的通信方式。
本文的局域網(wǎng)數(shù)據(jù)傳輸系統(tǒng)通過Delphi 710的網(wǎng)絡通信組件INDY建立客戶端與管理端之間的TCP連接。主要用到了IdTCPServer和 IdTCPClient兩個組件,其中IdTCPClient封裝了一個包括Socket支持的完整的TCP客戶端程序,IdTCPServer封裝了一個完整的多線程TCP服務器端程序。它使用一個或者多個線程來接收客戶端的連接。
利用TCP協(xié)議連接服務器和客戶機之后,服務器端讀入待發(fā)送文件建立文件流,進入監(jiān)聽狀態(tài),接到客戶端發(fā)送信號后開始傳輸。服務器根據(jù)客戶端發(fā)送的當前文件流傳輸位置按接收緩沖區(qū)大小對預傳輸文件分塊發(fā)送給客戶端,客戶端接收后保存到接收文件流,直到整個文件發(fā)送完畢。其具體設計按服務器和客戶端進行模塊劃分并進行編碼實現(xiàn),具體的功能界面、代碼設計及注釋文檔如下。
客戶端界面圖如圖1。在客戶端窗體上放置一個TIdTCPClient組件,用于和服務器端的連接。一個文件保存對話框,用于保存從服務器傳來的文件。兩個文本框,一個文本框用于輸入服務器的地址,另一個文本框用于設置組件的端口號。一個數(shù)據(jù)接收按鈕,其單擊事件代碼實現(xiàn)向服務器提交發(fā)送數(shù)據(jù)請求并接收由服務器發(fā)送的數(shù)據(jù)。一個狀態(tài)按鈕,表示文件傳輸情況。
Client.Button1單擊事件的具體代碼及其功能注釋如下:
圖1 客戶端界面圖
服務器端界面圖如圖2。在服務器端窗體上放置了一個IdTCPServer組件,用于監(jiān)聽客戶端的發(fā)送請求。一個文件打開對話框,用于打開要傳的文件。兩個文本框,一個用于輸入要傳文件在服務器上的地址,另一個用于設置組件的端口號。一個傳輸按鈕開始向客戶端發(fā)送數(shù)據(jù),一個狀態(tài)條表示文件傳輸?shù)那闆r。
圖2 服務器端界面圖
機房管理中,數(shù)據(jù)傳輸是一個非常實際和常遇問題。在長期的應用實踐過程中發(fā)現(xiàn)基于TCP的Sock2 et[5-10]通信保證了網(wǎng)絡通信的準確性和及時性。Delphi是一種優(yōu)秀的面向?qū)ο缶幊陶Z言,由于其具有的可移植性、多線程、簡單性、安全性等優(yōu)點而廣泛應用于網(wǎng)絡開發(fā)環(huán)境中。本文的主要功能由Delphi的TIdTCPServer和TIdTCPClient實現(xiàn),通過編程,增強了對TCP/IP協(xié)議的理解,認識了套接字的編程思想,實現(xiàn)了文件流的分段傳輸,解決了局域網(wǎng)C/S模式下的數(shù)據(jù)傳輸。
[1]陳忠菊.基于和協(xié)議的通信編程Delphi TCP/IP網(wǎng)絡與通信[J].電腦編程技巧與維護,2009(2).
[2]馮秀彥.基于Delphi Socket組件的局域網(wǎng)通信[J].石家莊職業(yè)技術學院學報,2008(4):33-34.
[3]白羽,洪飛.基于P2P SIP協(xié)議的即時通信系統(tǒng)[J].計算機系統(tǒng)應用,2009(2):14-17.
[4]張巖.Delphi下的點對點聊天工具編程[J].電腦知識與技術,2009(5):1239.
[5]羅亞非.基于TCP的Socket多線程通信[J].電腦知識與技術,2009(3):22-24.
[6]李新良,羅戈夕.用Socket的編程機制實現(xiàn)網(wǎng)上交談[J].電腦知識與技術,2006(10):29-30.
[7]王靜,曲鳳娟.基于Socket的多用戶并發(fā)通信的設計[J].福建電腦,2007(3):164.
[8]陳小艷.用Java實現(xiàn)多線程Socket通信[J].湖北廣播電視大學學報,2008(1):157-158.
[9]徐震.基于TCP/IP的半導體封裝設備之間數(shù)據(jù)通信的研究[D].廣州:廣東工業(yè)大學,2007.
[10]何進,謝松巍.基于Socket的TCP/IP網(wǎng)絡通訊模式研究[J].計算機應用研究,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
吉林省教育廳科技計劃項目 (吉教科合字 [2006J75]);吉林大學青年科研基金項目 (091167)。
曹婧華 (1978-),女,吉林公主嶺人,吉林大學和平校區(qū)計算機教研室講師,碩士,從事計算機網(wǎng)絡研究。