VB中基于TCPIP協(xié)議的點對點文件傳輸

VB中基于TCPIP協(xié)議的點對點文件傳輸

ID:6893445

大?。?30.50 KB

頁數(shù):9頁

時間:2018-01-29

VB中基于TCPIP協(xié)議的點對點文件傳輸_第1頁
VB中基于TCPIP協(xié)議的點對點文件傳輸_第2頁
VB中基于TCPIP協(xié)議的點對點文件傳輸_第3頁
VB中基于TCPIP協(xié)議的點對點文件傳輸_第4頁
VB中基于TCPIP協(xié)議的點對點文件傳輸_第5頁
資源描述:

《VB中基于TCPIP協(xié)議的點對點文件傳輸》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。

1、VB中基于TCP/IP協(xié)議的點對點文件傳輸?葛斌???摘要?隨著網(wǎng)絡(luò)的普及,網(wǎng)絡(luò)編程顯得尤其重要。本文使用Winsock控件實現(xiàn)兩臺計算機間的文件傳輸,描述了Winsock控件的使用方法及有關(guān)文件傳輸?shù)乃惴ā???關(guān)鍵詞TCP/IP協(xié)議,Winsock控件,網(wǎng)絡(luò)編程,文件傳輸,斷點續(xù)傳。???隨著計算機網(wǎng)絡(luò)的迅速發(fā)展,人們的生活越來越離不開網(wǎng)絡(luò),如今網(wǎng)絡(luò)編程已成為計算機發(fā)展的熱點,而在眾多的網(wǎng)絡(luò)通信中,又以TCP/IP協(xié)議最為流行。本文討論的Winsock控件,提供了訪問TCP/IP網(wǎng)絡(luò)的捷徑,使用它可以不必了解TCP

2、/IP的細節(jié)和調(diào)用WinsockAPI,只要設(shè)置好相應(yīng)的屬性和觸發(fā)事件后的處理,就可以實現(xiàn)計算機之間的數(shù)據(jù)通信。一、Winsock控件???Winsock即WindowsSockets規(guī)范的簡稱,是目前最流行的網(wǎng)絡(luò)通信應(yīng)用程序接口之一。所謂Socket,通常也稱作"套接字",用于描述IP地址和端口,是一個通信鏈的句柄。應(yīng)用程序通常通過“套接字”向網(wǎng)絡(luò)發(fā)出請求或者應(yīng)答網(wǎng)絡(luò)請求。Socket是網(wǎng)絡(luò)上運行的兩個程序間雙向通訊的一端,它既可以接受請求,也可以發(fā)送請求,利用它可以較為方便的編寫網(wǎng)絡(luò)上數(shù)據(jù)的傳遞。Winsock控件

3、工作在傳輸層上,在這一層上,目前主要流行的協(xié)議包括TCP和UDP兩種:TCP協(xié)議適用于那些對于數(shù)據(jù)的可靠性要求比較高的情況,目前大多數(shù)的網(wǎng)絡(luò)應(yīng)用層協(xié)議都是基于TCP協(xié)議的(例如常用的HTTP、FTP、SMTP、POP3等協(xié)議);UDP協(xié)議適用于對數(shù)據(jù)可靠性要求不高而對速度要求較高的情況,這里主要包括一些需要大流量的(例如Real公司的RTSP協(xié)議,騰訊公司的QQ協(xié)議等)。二、Winsock控件通信的工作原理???Winsock控件是基于Socket規(guī)范創(chuàng)建的,所以其通信的實質(zhì)是對Socket接口進行數(shù)據(jù)的讀寫操作。如果

4、兩個應(yīng)用程序需要通信,它們可以通過使用Socket類來建立套接字連接,可以將這個過程想象為一次電話呼叫過程:呼叫者通過撥號與被呼叫者連接,當電話接通時,雙方都可以自由通話了,只不過這里的呼叫者被稱為“客戶”,被呼叫者則稱為“服務(wù)器”,而號碼則為“IP地址+端口”,但在建立連接之前,必須由“客戶”發(fā)出呼叫,且此時的“服務(wù)器”正在監(jiān)聽。因此,基于TCP/IP協(xié)議的通信,需要分別建立客戶端應(yīng)用程序和服務(wù)器端應(yīng)用程序。其大致流程如圖1所示:??????????????????????????????????圖1Winsock工

5、作原理???端口號被規(guī)定在0~65535范圍內(nèi)的某一個整數(shù),其中0~1023被預(yù)先定義的服務(wù)器通信所占用(如telnet占用23,http占用端口80),所以最好使用1024~65535這些端口中的某一個,以免發(fā)生端口沖突。三、基本方法???客戶端要與服務(wù)器端進行通信,首先,必須知道服務(wù)器端的域名或IP地址(RemoteHost屬性),就像要和某人打電話前,必須知道對方的電話號碼;其次,還必須和服務(wù)器端約定相同的端口(RemotePort屬性),用于數(shù)據(jù)的輸入和輸出;最后,調(diào)用Connect方法與服務(wù)器端建立連接。??

6、?服務(wù)器端應(yīng)設(shè)置一個監(jiān)聽端口(LocalPort屬性),端口應(yīng)與客戶端的端口相同,同時調(diào)用Listen方法時刻監(jiān)聽客戶端的連接請求(ConnectionRequest事件);當接收到客戶端的連接請求時,可調(diào)用ConnectionRequest事件的Accept方法,這樣與客戶端的連接就建立了。???客戶端和服務(wù)器端成功建立連接后,任何一方都可以自由的發(fā)送數(shù)據(jù)(SendData方法)和接收數(shù)據(jù)(GetData方法),這些方法都在DataArrival事件中。四、案例實現(xiàn)???這里筆者通過一個實際應(yīng)用,來說明如何使用Win

7、sock控件進行網(wǎng)絡(luò)通信。實例中有兩臺計算機,一臺作為服務(wù)器端,一臺作為客戶端,實現(xiàn)的功能是將服務(wù)器端的某一文件傳送到客戶端,服務(wù)器端和客戶端進行點對點的文件傳輸。???1.實現(xiàn)原理???本文將實現(xiàn)的文件傳輸只有一個發(fā)送方和一個接收方,這是最基本的文件傳輸方式,運用的原理也比較簡單:發(fā)送方先獲取待傳輸文件的基本信息,主要是文件名及文件長度(用于創(chuàng)建數(shù)據(jù)緩沖區(qū));然后,將其發(fā)送給接收方;接著,建立和文件一樣大小的數(shù)據(jù)緩沖區(qū),并將文件讀入;最后,將數(shù)據(jù)緩沖區(qū)中的數(shù)據(jù)發(fā)送給接收方。與此同時,當接收方接收到文件名和文件長度之后

8、,就為其創(chuàng)建新的文件和數(shù)據(jù)緩沖區(qū);然后,接收傳輸?shù)奈募?shù)據(jù),并將其放在數(shù)據(jù)緩沖區(qū)中;最后,依次將數(shù)據(jù)緩沖區(qū)的數(shù)據(jù)寫入新創(chuàng)建的文件中。這樣便完成了不同計算機之間的文件傳輸。???2.服務(wù)器端主程序代碼???“通用”中聲明如下:OptionBase1Dimdata()AsByte,sendAsLong?'聲明數(shù)據(jù)緩沖區(qū)和已傳輸?shù)臄?shù)據(jù)D

當前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。