用VB建立FTP元件 get

2021-04-12 18:32:07 字數 3803 閱讀 1855

基本步驟:

1、用乙個internetopen呼叫設定環境。

2、呼叫internetconnect 函式與主機連線。

3、呼叫ftpgetfile 達到檔案。

4、關閉第1、2步建立的控制代碼,用internetclosehandle 函式。

現在來仔細看看每一步:

1、通過呼叫internetopen 函式設定環境。下面是vb特定呼叫這一函式的宣告:

private declare function internetopen lib "wininet.dll" alias "internetopena" _

(byval sagent as string, byval laccesstype as long, byval sproxyname as string, _

byval sproxybypass as string, byval lflags as long) as long

引數sagent 用來指定呼叫wininet 函式的應用程式或實體。為了達到目的,可以設定ftp控制。

引數laccesstype 指定我們是直接與某一主機相連還是使用**伺服器相連。如果傳遞值1,就直接與主機連線。如果傳遞3,就通過**伺服器。如果傳遞0,連線時就要基於

hkey_current_user/software/microsoft/windows/currentversion/internet settings下的登錄檔數值

proxyenable、proxyserver和 proxyoverride 。

我們可以使用引數sproxyname和 sproxybypass,而不是註冊設定來提供**伺服器和不使用**伺服器的ip位址和名字。列出**的基本格式是rotocol=protocol://proxy_name:access_port?。例如,要指定proxy1 上的埠21為**伺服器,用ftp=ftp://proxy1:21?作為sproxyname。要饒過以ov? 開始的任何主機,sproxybypass 字串應為ov*? 。

最後,lflags 用來顯示影響函式結果的不同選擇。在我們的例子中,我們傳遞0。

所以,不使用**而開啟乙個internet session 時,我們的呼叫是這樣的:

lnginet = internetopen(「ftp control」, 1, vbnullstring, vbnullstring, 0)

如果函式呼叫失敗,lnginet 為0。不然,lnginet 就儲存在下一步中將要傳遞給internetconnect

函式的控制代碼的值。

2、通過呼叫internetconnect 函式與主機連線。vb特定呼叫這一函式的宣告是:

private declare function internetconnect lib "wininet.dll" alias "internetconnecta" _

(byval hinternetsession as long, byval sservername as string, _

byval nserverport as integer, byval susername as string, _

byval spassword as string, byval lservice as long, _

byval lflags as long, byval lcontext as long) as long

第乙個引數hinternetsession 是internetopen 呼叫返回的控制代碼值。

sservername 是我們即將連線的ftp伺服器的ip位址或主機名。

nserverport 指示與哪乙個埠連線。在我們的例子中使用的值為0,它指示的是預設的埠21。

susername 和 spassword 分別傳遞使用者名稱和口令。

lservice 用來指示使用的服務型別,如http, ftp等。通常傳遞值為1,表示ftp服務。

如果將x8000000傳遞到 lflags 引數,連線將使用被動ftp語義。或者,在我們的例子中,傳遞0來使用非被動語義。

最後,當使用回叫訊號時,lcontext 用來識別應用程式的前後關係。因為在我們的例子中不使用回叫訊號,所以這個值為0。

現在使用匿名的電子郵件使用者名稱與主機ftp.microsoft.com 相連線:

lnginetconn = internetconnect(lnginet, 「ftp.microsoft.com」, 0, _

「anonymous」,」[email protected]」, 1, 0, 0)

如果函式呼叫失敗,則lnginetconn 為0。反之,lnginetconn 就儲存在下一步中將傳遞給ftpgetfile 的控制代碼的值。

3、現在我們已經實現了連線,然後就需要呼叫ftpgetfile 。這個函式完成從乙個ftp伺服器上讀取檔案並在本地儲存時有關的所有管理功能。vb特定呼叫這一函式的宣告是:

private declare function ftpgetfile lib "wininet.dll" alias "ftpgetfilea" _

(byval hftpsession as long, byval lpszremotefile as string, _

byval lpsznewfile as string, byval ffailifexists as boolean, _

byval dwflagsandattributes as long, byval dwflags as long, _

byval dwcontext as long) as boolean

第乙個引數hftpsession 是internetconnect 呼叫返回的控制代碼值。

lpszremotefile和lpsznewfile 分別是ftp伺服器上的檔名和將在本地機上建立的檔名。

ffailifexists 標誌是0(替換本地檔案)或1 (如果本地檔案已經存在則取消)。

dwflagsandattributes 用來指定本地檔案的檔案屬性。在我們的例子中忽略,只傳遞0。

dwflags 引數指定為1是用ascii 傳輸檔案(a類傳輸方法),指定為2是用二進位制傳輸檔案(1類傳輸方法)。由於dirmap.txt 是ascii 文字檔案,我們傳遞值1。

最後,當使用回叫訊號時,lcontext 用來識別應用程式前後關係。因為在我們的例子中不使用回叫訊號,所以這個值為0。

所以,以下是得到dirmap.txt檔案並將其存在 c:/dirmap.txt的呼叫。如果本地檔案已經存在,就覆蓋它。

blnrc = ftpgetfile(lnginetconn, 「dirmap.txt」,」c:/dirmap.txt」, 0, 0, 1, 0)

如果函式呼叫成功,blnrc為 true, 反之為false。

4、現在檔案已經被接收,使用internetclosehandle 呼叫來關閉連線和session 控制代碼。vb特定呼叫這一函式的宣告是:

private declare function internetclosehandle lib "wininet.dll" (byval hinet as long) as integer.

如同指明的一樣,此函式只有乙個引數hinet,是要關閉或拋棄的控制代碼的值。因為internetconnection 和internetopen 中有控制代碼,就需要呼叫這個關閉函式兩次。另外因為internetconnection 控制代碼是由internetopen 控制代碼決定的,關閉他們時的順序與建立時相反。

以下是呼叫函式:

internetclosehandle lnginetconn

internetclosehandle lnginet

用這短短的四步就完成了ftp get。

用JMeter建立FTP測試

當然,jmeter官方 的使用者手冊也有例子,但由於版本較早,我也算是對自己學習的乙個總結,所以再整理乙個。本人使用的是jmeter2.4版本。測試的伺服器是ip 124.205.228.54 由於找不到ftp站點,所以在 主機屋 申請了乙個免費的ftp空間 1.建立乙個執行緒組 2.執行緒組 新增...

用vb6寫asp元件的簡單例子

本機除錯 1 重新啟動www服務 2 重新生成dll 伺服器註冊 1 手工註冊dll 非常遺憾要重新啟動伺服器 regsvr32 rhasp.dll 反註冊regsvr32 u rhasp.dll 2 另外還有乙個方法可以不重新啟動伺服器 使用mts microsoft transaction se...

如何使用VB建立伺服器端元件

本篇文章通過與傳統的設計方法相比較,介紹了如何在asp 中呼叫vb元件的方法。在本篇文章中,我們假設讀者具有vb和asp的相關入門知識。伺服器端元件和客戶端元件的比較 伺服器端元件和客戶端元件有許多不同之處。伺服器端元件是在計算機伺服器上註冊的dll檔案,客戶端元件則在瀏覽器執行的計算機上註冊,在i...