一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

在用PB進行開發(fā)時常常需要用到ftp功能

 綠茶圖書吧 2013-03-06

在用PB進行開發(fā)時常常需要用到ftp功能

(2009-09-21 18:19:56)
標簽:

雜談

分類: pb方面
  ----   在用PB進行開發(fā)時常常需要用到ftp功能,最典型的應用就是將數(shù)據(jù)窗口中的數(shù)據(jù)生成txt文件,然后將此數(shù)據(jù)文件用ftp發(fā)送到遠程服務器上  
  去。由于pb本身并未提供任何ftp的功能,因此想在pb中進行ftp傳輸,只能應用pb以外的資源。以下是在pb開發(fā)中總結出來的幾種方法。    
   
  ----   1.   使用外部命令    
   
  ----   這種方法就是在pb程序中運行Windows中自帶的ftp命令。具體做法是在程序中生成一個.bat文件,將要運行的ftp命令寫到此文件中,再運行這  
  個批處理文件。假設ftp服務器ip為   202.114.67.2,用戶名為user,口令12345,現(xiàn)在要將本地c:\temp\下的t00001.txt文件上傳到服務器的\txtdata  
  \目錄下去。則pb代碼如下:    
   
  integer   li_bat   //文件名指針  
  li_bat   =   FileOpen(path_ftp+'get_file.bat',    
  lineMode!,   Write!,   LockWrite!,   Replace!)  
   
  FileWrite(li_bat,   'cd   c:\temp\')  
  FileWrite(li_bat,   'ftp   202.114.67.2')  
  FileWrite(li_bat,   'user)  
  FileWrite(li_bat,   '12345')  
  FileWrite(li_bat,   'put   t00001.txt  
  \txtdata\t00001.txt')  
  FileWrite(li_bat,   'bye')  
  FileWrite(li_bat,   'exit')  
  FileClose(li_bat)  
  Run(path_ftp+'get_file.BAT',Minimized!)  
  messagebox("提示信息","數(shù)據(jù)上報完畢")  
   
  ----   此方法的優(yōu)點是簡單易行,既不要調用API函數(shù),也不需加入OLE。缺點一是要運行外部命令,將會打開dos窗口,顯得不夠和諧;二是數(shù)據(jù)傳輸  
  成功與否無法判斷,在編程時不好控制。    
   
  ----   2.   使用Internet   Transfer控件    
   
  ----   Internet   Transfer控件是網絡編程中非常常用的控件。它支持目前Internet上使用最為廣泛的兩種協(xié)議,即Http和Ftp。在windows98中它是由  
  系統(tǒng)自帶。有關此控件的詳細資料請查看相關書籍。這里我們只使用它的Ftp功能。在PB中加入一個與此控件的OLE,取名ole_1,并按以下數(shù)據(jù)設置此  
  控件的屬性(注意不是ole_1的屬性),表中沒有列出的屬性請用缺省值:    
   
  屬性             值                   說明  
  Protocol                 2           指定用Ftp協(xié)議  
  Remotehost       202.114.67.2          
  Username         User1          
  Password         12345          
   
  ----   Internet   Transfer控件支持兩種數(shù)據(jù)傳輸方式,即同步傳輸方式和異步傳輸方式。同步傳輸方式在數(shù)據(jù)傳輸時會阻塞程序,此功能是通過調用  
  該控件的OpenUrl方法來實現(xiàn)的;而異步方式則不會阻塞程序,它通過調用控件的Execute方法來實現(xiàn)。同步方式雖然易于控制,但它只能下載文件,  
  不能上傳文件,這使得它在實際的應用受到限制。要實現(xiàn)數(shù)據(jù)的上傳下載,只能使用此控件的異步傳輸方式。要完成上例中的功能,在PB程序中加入  
  以下語句即可:    
   
  Ole_1.object.execute("","put   c:  
  \temp\t00001.txt     \txtdata\t00001.txt")  
   
  ----   同理,如果要將服務器上的文件下載到本地,在程序中加入即下語句:    
   
  Ole_1.   object.execute("","get   \txtdata\t00001.txt   c:\temp\t00001.txt")  
   
  ----   Internet   Transfer控件的功能很強大,利用它足以制作一個功能比較完善的FTP工具,而且它是操作系統(tǒng)自帶的,在編程時不需要注冊新的控  
  件。但根據(jù)筆者的使用經驗,此控件也有兩個不能忽視的缺點,其一、它的數(shù)據(jù)上傳下載是異步傳輸?shù)?,在每次只運行一個ftp命令時尚可,如果一次  
  運行多個ftp命令就會出錯。比如說,我們想先進入服務器的\file目錄,再上傳數(shù)據(jù),這樣程序應如下:    
   
  Ole_1.object.execute("","cd   \file\")  
  Ole_1.object.execute("","put    
  c:\temp\t00001.txt     \txtdata\t00001.txt")  
  ----   由于execute方法是異步執(zhí)行的,它不等第一個語句完成就開始執(zhí)行第二條語句,這樣可能服務器還來不及將當前目錄轉到\file下數(shù)據(jù)已經開始  
  上傳,造成錯誤。    
   
  ----   其二、筆者還發(fā)現(xiàn)一個莫名其妙的問題,那就是利用此控件進行上傳時它會將上傳到服務器上的文件的文件名改為大寫,如上例中,本地的  
  t00001.txt上傳到服務器上后,它的名字會變成T00001.TXT,這在NT上自然無妨,但在Unix機器上就可能帶來錯誤。    
   
  ----   3.   使用Mabry   Internet   FTP/X   Control    
   
  ----   此控件是由Mabry   Software公司提供的一個用于Ftp的控件,讀者可以到www.mabry.com上去下載此控件(mftpx.ocx)。經比較,筆者認為在進行  
  ftp傳輸方面,使用此控件進行編程最方便。它能完成絕大部分Ftp的功能,而且在編程中能很方便地控制程序的運行。比如說要完成前述功能,我們  
  先注冊該控件,然后在PB程序中加入一個該控件的Ole,取名Ole_1;一個單行編輯器Sle_1,用為顯示有關信息;一個按鈕Cb_1,點擊它時進行Ftp操  
  作。另設一個boolean   型Instance   Variables,取名is_con,并將它設為false,用于指示網絡是否已連通。對該控件的屬性進行如下設置:    
   
  屬性             值                 說明  
  Host             202.114.67.2          
  Logonname         User          
  Logonpassword     12345            
  Timeout           10                 根據(jù)實際情況設置  
   
  ----   在Cb_1的clicked事件中加入以下代碼:    
   
  sle_1.text   =   "正在連接....."  
  setpointer(hourglass!)  
  ole_1.object.connect()  
   
  if   is_con   then  
          sle_1.text   =   "開始傳輸...."  
  ole_1.object.putfile  
  ("c:\temp\t00001.txt","/txtdata/t00001.txt")  
          sle_1.text   =   "傳輸完畢!"  
  end   if  
   
  setpointer(arrow!)  
  is_con   =   false  
  在Ole_1的各事件中加入相應代碼:  
  connected事件:  
  if   fconnected   then  
  sle_1.text   =   "連接成功!"  
          is_con   =   true  
  else  
          sle_1.text   =   "連接失敗!"  
          is_con   =   false  
  end   if  
  externalexception事件:  
  sle_1.text   =   "外部錯誤,可能網絡不通"  
   
  action   =   ExceptionIgnore!  
  progress事件:  
  sle_1.text   =   "已傳輸"  
  +   string(bytestransfered)+"字節(jié)....."  

    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    国产一区欧美一区日韩一区| 欧洲亚洲精品自拍偷拍| 国产精品久久精品国产| 国产老熟女乱子人伦视频| 五月婷婷综合缴情六月| 国产福利一区二区久久| 视频一区中文字幕日韩| 午夜精品一区二区三区国产| 亚洲综合伊人五月天中文| 九九久久精品久久久精品| 久久精品福利在线观看| 国产精品亚洲一级av第二区| 91在线播放在线播放观看| 麻豆精品在线一区二区三区| 久久热在线免费视频精品| 国产传媒中文字幕东京热| 国内精品伊人久久久av高清 | 中文字幕日韩欧美亚洲午夜| 久久99夜色精品噜噜亚洲av| 日韩精品区欧美在线一区| 国产av一区二区三区四区五区| 免费大片黄在线观看国语| 亚洲中文字幕在线观看黑人| 在线日本不卡一区二区| 国产午夜福利不卡片在线观看| 中文字幕精品少妇人妻| 免费在线观看激情小视频| 亚洲免费黄色高清在线观看| 免费精品一区二区三区| 一区二区在线激情视频| 真实偷拍一区二区免费视频| 91超频在线视频中文字幕| 国产精品免费精品一区二区| 91偷拍视频久久精品| 99精品人妻少妇一区二区人人妻| 亚洲精品福利视频你懂的| 国产高清在线不卡一区| 国产偷拍盗摄一区二区| 大香蕉伊人一区二区三区| 国内胖女人做爰视频有没有| 欧美日韩亚洲巨色人妻|