代碼演示VB.NET處理FTP兩種方法
熟悉VB.NET都知道,它沒有專門處理FTP的類,現(xiàn)在我們可以通過調(diào)用系統(tǒng)自帶的FTP.EXE或者是調(diào)用win32API中的wininet.dll兩種方法來完成基本操作。希望以下的代碼能為大家拋磚引玉。
VB.NET處理FTP方法一:使用Ftp.exe,通過process類來調(diào)用它。
- ImportsSystem.Diagnostics
- ...
- PublicSubGetFileByCallFtp()
- '定義ProcessStartInfo,Process的啟動信息。
- DimpsiAsNewProcessStartInfo
- 'ftp.exe的路徑***放到配置文件里。
- psi.FileName="C:\WINNT\system32\ftp.exe"
- psi.RedirectStandardInput=False
- psi.RedirectStandardOutput=True
- '該值指示不使用操作系統(tǒng)Shell程序啟動進(jìn)程。
- psi.UseShellExecute=False
- '命令集文件名.注意,路徑中不能有空格.
- DimfileNameAsString="C\ftp.txt"
- '-s:FileName表示,從文件中讀取控制命令
- psi.Arguments="-s:"+fileName
- DimprocAsProcess
- proc=Process.Start(psi)
- '等待進(jìn)程完成任務(wù)
- proc.WaitForExit()
- '在控制臺輸出結(jié)果
- Console.WriteLine(proc.StandardOutput)
- Console.ReadLine()
- EndSub
VB.NET處理FTP方法二,使用win32api——wininet.dll
首先是,api聲明:
因?yàn)榇藴y試程序,是VB.NETConsoleApplication所以,api聲明寫在Module里,
方法是靜態(tài)的。所以沒加Shared關(guān)鍵字,這一點(diǎn)請大家注意。
- <DllImport("wininet")>_
- PublicFunctionInternetOpen(ByValsAgentAsString,ByValLAccessTypeAsInteger,ByValsProxyNameAsString,_
- ByValSProxyBypassAsString,ByVallFlagsAsInteger)AsInteger
- EndFunction
- <DllImport("wininet")>_
- PublicFunctionInternetConnect(ByValhInternetSessionAsInteger,ByValsServerNameAsString,_
- ByValnServerPortAsInteger,ByValsUsernameAsString,_
- ByValsPasswordAsString,ByVallServiceAsInteger,_
- ByVallFlagsAsInteger,ByVallContextAsInteger)AsInteger
- EndFunction
- <DllImport("wininet")>_
- PublicFunctionFtpGetFile(ByValhFtpSessionAsInteger,ByVallpszRemoteFileAsString,_
- ByVallpszNewFileAsString,ByValfFailIfExistsAsBoolean,_
- ByValdwFlagsAndAttributesAsInteger,ByValdwFlagsAsInteger,_
- ByValdwContextAsInteger)AsBoolean
- EndFunction
- <DllImport("wininet")>_
- PublicFunctionInternetCloseHandle(ByValhInetAsInteger)AsInteger
- EndFunction
調(diào)用:
- PublicSubGetFileByCallWininetDLL()
- Try
- DimintinetAsInteger=InternetOpen(Nothing,0,Nothing,Nothing,0)
- Ifintinet>0Then
- '參數(shù):intinet的session值,ftp地址,端口,用戶名,密碼,lService,lFlags,lContext
- DimintinetconnAsInteger=InternetConnect(intinet,"192.168.110.152",0,"tokiwa","tokiwa",1,0,0)
- Ifintinetconn>0Then
- '下載某個文件到指定文件
- DimretAsBoolean=FtpGetFile(intinetconn,"pagerror.gif","C:\itest.gif",0,0,1,0)
- IfretThen
- Console.WriteLine("ok!")
- Console.ReadLine()
- EndIf
- InternetCloseHandle(intinetconn)
- InternetCloseHandle
以上是VB.NET處理FTP的兩種方法,大家學(xué)會了嗎?
【編輯推薦】