/**
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埠進行資料互動的,導致防火牆無法去...