基本步驟:
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」,」ally@wallyworld.com」, 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...