国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

用VB創建FTP組件(get)

2024-07-21 02:15:40
字體:
來源:轉載
供稿:網友
基本步驟:

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。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 廉江市| 佛山市| 公安县| 集安市| 铜山县| 青铜峡市| 弋阳县| 崇信县| 平顶山市| 乳源| 南通市| 武隆县| 翼城县| 突泉县| 丽江市| 武隆县| 廊坊市| 南江县| 沭阳县| 靖边县| 图们市| 汉阴县| 疏勒县| 昌乐县| 蚌埠市| 德安县| 从化市| 徐水县| 勐海县| 璧山县| 余庆县| 红安县| 湖口县| 宜兰市| 大荔县| 佳木斯市| 慈溪市| 文水县| 阿拉善盟| 长沙县| 莆田市|