FTP讀取檔案及防止防火牆自動掛起設定

2021-07-25 04:13:29 字數 3980 閱讀 2541

/**

2 * ftp取天氣網資訊,引數為ftp位址、賬號、密碼

3 * @param ip

4 * @param port

5 * @param user

6 * @param pswd

7 * @param path 檔案路徑

27 //設定ftpclient為被動傳輸模式即可解決執行緒掛起問題,防火牆問題

28 ftpclient.enterlocalpassivemode();

29

30 logger.info("【連線成功,進行取值】");

31 //根據當前時間,得到需要取的檔名稱

32 string datestr = dateutil.getformatdate(dateutil.getnowdate(),"yyyymmdd hh:mm:ss");

33 string ymd = datestr.substring(0, 8);

34 string hhmm = datestr.substring(9, 15).replace(":", "");

35 int hhmmi = integer.parseint(hhmm) ;

36 string zsymd = ymd ;

37 int zshhmmi = hhmmi ;

38

39 string hzstr = "800" ;

40 if(hhmmi<805)else if (hhmmi<1205)else if (hhmmi<1715)else if(hhmmi <=2400)

54

55 string zsf = "07" ;

56 if(zshhmmi<705)else if(zshhmmi<1705)else if(zshhmmi<=2400)

65

66 //檔名稱

67 string weatherfname = "gn_360_"+ymd+hzstr+".txt" ;

68 string ziwaixianfname = zsymd+zsf+"ziwaixian.txt" ;

69 string chuanyifname = zsymd+zsf+"chuanyi.txt" ;

70 string xichefname = zsymd+zsf+"xiche.txt" ;

71 string ganmaofname = zsymd+zsf+"ganmao.txt" ;

72 string yundongfname = zsymd+zsf+"yundong.txt" ;

73

74 logger.info("【檔名:】"+weatherfname+"##"+ziwaixianfname+"##"+chuanyifname+"##"+xichefname+"##"+ganmaofname+"##"+yundongfname+"##");

75

76 string weathercontent = getstrfromftp(ftpclient,weatherfname) ;

77 string ziwaixiancontent = getstrfromftp(ftpclient,ziwaixianfname) ;

78 string chuanyicontent = getstrfromftp(ftpclient,chuanyifname) ;

79 string xichecontent = getstrfromftp(ftpclient,xichefname) ;

80 string ganmaocontent = getstrfromftp(ftpclient,ganmaofname) ;

81 string yundongcontent = getstrfromftp(ftpclient,yundongfname) ;

82

83 //將指數指標儲存到map中,key=天氣城市id,value=提供了幾天的資料,每天區分以#區分,幾天不確定

84 logger.info("【取值成功,進行轉化到map】");

85 hashmap ziwaixianmap = covertzbcontenttomap(ziwaixiancontent);

86 hashmap chuanyimap = covertzbcontenttomap(chuanyicontent);

87 hashmap xichemap = covertzbcontenttomap(xichecontent);

88 hashmap ganmaomap = covertzbcontenttomap(ganmaocontent);

89 hashmap yundongmap = covertzbcontenttomap(yundongcontent);

90

91 logger.info("【取值成功,進行邏輯處理】");

92 }

使用的2個方法:

1 /*

2 * 獲取ftp上指定檔案的內容

3 */

4 private string getstrfromftp(ftpclient ftpclient,string filename)

26 reader.close();

27 if (ins != null)

30 // 主動呼叫一次getreply()把接下來的226消費掉. 這樣做是可以解決這個返回null問題

31 logger.info("進入取值方法reply前");

32 ftpclient.getreply();

33 logger.info("進入取值方法reply後");

34 } catch (exception e)

38 logger.info("取值方法完畢,內容:"+builder.tostring());

39 return builder.tostring();

40 }

41

42 /*

43 * 指標陣列轉化到map,key=城市id,value=提供了幾天的資料,每天區分以#區分,幾天不確定

44 */

45 private hashmap covertzbcontenttomap(string content){

46 hashmap map = new hashmap();

47 string contentarr = content.split("==") ;

48 for(int i=0;i

FTP防火牆設定

需要開很多埠的。有很多人對ftp的問題多多,大家參考 討論一下。我的環境 server isa sp1,iis client windows 2000 and xp,cuteftp 主要討論isa和ftp在同一臺機器上的處理辦法。ftp的特殊性 大多數的tcp服務是使用單個的連線,一般是客戶向伺服器...

防火牆中配置FTP

color green size 12 要求 外網充許訪問內網中的ftp服務。考慮 將內網位址nat為外網可以訪問的位址 ftp服務一般使用tcp21埠進行主機鏈結 ftp分為pasv與port兩種方式,即被動模式與主動模式。在pasv下,當客戶端與ftp伺服器發生資料傳輸過程中,採用高於1024的...

ftp通過防火牆放行

2019獨角獸企業重金招聘python工程師標準 一直都是在困擾ftp通過系統防火牆無法鏈結的問題,現在終於得到解決了 一般啟動ftp之後正常監聽如下 在防火牆放行tcp和udp的21埠和20埠之後,本地還是無法訪問ftp的,這是由於客戶端是用隨機埠去和伺服器的20埠進行資料互動的,導致防火牆無法去...