<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 310, comments - 6939, trackbacks - 0, articles - 3
      BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理
                                                              用Java實(shí)現(xiàn)FTP批量大文件上傳下載(四) 

  • 用Java實(shí)現(xiàn)FTP批量大文件上傳下載(六)--代碼及示例下載
  • 用Java實(shí)現(xiàn)FTP批量大文件上傳下載(五) --運(yùn)行效果圖
  • 用Java實(shí)現(xiàn)FTP批量大文件上傳下載(四)
  • 用Java實(shí)現(xiàn)FTP批量大文件上傳下載(三)
  • 用Java實(shí)現(xiàn)FTP批量大文件上傳下載(二)
  • 用Java實(shí)現(xiàn)FTP批量大文件上傳下載(一)
     
  • 六、FTP端口映射

    FTP的數(shù)據(jù)連接有PASVPORT兩種,如果你的FTP服務(wù)器位于內(nèi)網(wǎng)中,需要做端口映射。筆者剛開(kāi)始時(shí)對(duì)FTP的網(wǎng)外網(wǎng)映射也是不怎么了解,因此開(kāi)始走了不少的彎路,開(kāi)始一直以為是自己的程序有問(wèn)題,浪費(fèi)了不少時(shí)間,希望通過(guò)這段,能讓大家在開(kāi)發(fā)的時(shí)候少花或不花這些無(wú)謂的時(shí)間與精力。

    PCD上曾經(jīng)有一篇文章介紹過(guò)一種直接訪問(wèn)內(nèi)網(wǎng)的方法,其實(shí)我們只要用端口映射工具,就可輕松實(shí)現(xiàn)穿透內(nèi)網(wǎng)的目的。端口映射器就是一款這樣的工具,更值得一提的是,它擺脫了命令行模式,提供了圖形界面的操作環(huán)境。

    為了讓各位能更加明白,先說(shuō)一下原理。假設(shè)現(xiàn)在有一個(gè)局域網(wǎng),主機(jī)為A,局域網(wǎng)內(nèi)除了主機(jī)外,還有一臺(tái)機(jī)器為BB機(jī)器當(dāng)然是通過(guò)主機(jī)A上網(wǎng)的。另外還有一臺(tái)可上網(wǎng)的機(jī)器為C,與AB并不在一個(gè)局域網(wǎng)內(nèi)。通常情況下,C機(jī)器只能訪問(wèn)到A主機(jī),而無(wú)法穿透局域網(wǎng),訪問(wèn)到B。而通過(guò)端口映射后,當(dāng)C機(jī)器訪問(wèn)主機(jī)A的指定端口時(shí),主機(jī)A上的端口映射器就起作用了,它會(huì)把指定端口上的數(shù)據(jù)轉(zhuǎn)到局域網(wǎng)內(nèi)另一臺(tái)機(jī)器的指定端口上,從而實(shí)現(xiàn)訪問(wèn)內(nèi)網(wǎng)機(jī)器的目的。這樣說(shuō),大家明白了吧。至于具體的如何進(jìn)行配置,筆者認(rèn)為應(yīng)該不是件很難的事情,再說(shuō),網(wǎng)上這樣的圖形解釋很多,請(qǐng)大家參考網(wǎng)絡(luò)上的文章進(jìn)行設(shè)置。

    當(dāng)然,實(shí)現(xiàn)直接訪問(wèn)內(nèi)網(wǎng)的優(yōu)點(diǎn)是顯而易見(jiàn)的,別的不說(shuō),起碼FTP資源是被充分利用了。不過(guò)必須提醒讀者的是,直接訪問(wèn)內(nèi)網(wǎng)可能使內(nèi)網(wǎng)的安全性受到威脅。筆者相信大部分朋友對(duì)主機(jī)安全的重要性還是重視的,但往往會(huì)忽略內(nèi)網(wǎng)機(jī)器的安全設(shè)置。一旦你實(shí)現(xiàn)了直接訪問(wèn)內(nèi)網(wǎng),那就必須像對(duì)待主機(jī)一樣對(duì)待內(nèi)網(wǎng)機(jī)器,否則你的整個(gè)網(wǎng)絡(luò)將可能處于危險(xiǎn)狀態(tài)。

    六、    訪問(wèn)客戶端資源

     

    Java應(yīng)用程序環(huán)境的安全策略,對(duì)于不同的代碼所擁有的不同資源的許可,它由一個(gè)Policy對(duì)象來(lái)表達(dá)。為了讓Applet(或者運(yùn)行在 SecurityManager下的一個(gè)應(yīng)用程序)能夠執(zhí)行受保護(hù)的行為,例如讀寫文件,Applet(或 Java應(yīng)用程序)必須獲得那項(xiàng)操作的許可,安全策略文件就是用來(lái)實(shí)現(xiàn)這些許可。

    Policy對(duì)象可能有多個(gè)實(shí)體,雖然任何時(shí)候只能有一個(gè)起作用。當(dāng)前安裝的Policy對(duì)象,在程序中可以通過(guò)調(diào)用getPolicy方法得到,也可以通過(guò)調(diào)用setPolicy方法改變。Policy對(duì)象評(píng)估整個(gè)策略,返回一個(gè)適當(dāng)?shù)?/span>Permissions對(duì)象,詳細(xì)說(shuō)明哪些代碼可以訪問(wèn)哪些資源。策略文件可以儲(chǔ)存在無(wú)格式的ASCII文件或Policy類的二進(jìn)制文件或數(shù)據(jù)庫(kù)中。本文僅討論無(wú)格式的ASCII文件的形式。

    在實(shí)際使用中,我們可以不需要自己手動(dòng)去編寫那么復(fù)雜的java.policy文件,特別是在不使用數(shù)字簽名時(shí)。這時(shí),我們完全可以借鑒JRE提供給我們的現(xiàn)成的 C:\Program Files\Java\jre1.5.0_12\lib\security\java.policy文件,根據(jù)我們的需要做相應(yīng)的修改,本文就針對(duì)不使用數(shù)字簽名情況編寫安全策略文件。下面,是一個(gè)完整的在Windows NT/XP下使用的java.policy文件。在文件中,分別使用注釋的形式說(shuō)明了每個(gè)“permission”記錄的用途。當(dāng)然,不同的程序?qū)Y源訪問(wèn)權(quán)限的要求可能不一樣,可以根據(jù)項(xiàng)目需要進(jìn)行調(diào)整與選擇。

    grant    { 
           //對(duì)系統(tǒng)和用戶目錄“讀”的權(quán)限
           permission    java.util.PropertyPermission    "user.dir",    "read";   
           permission    java.util.PropertyPermission    "user.home",    "read";   
           permission    java.util.PropertyPermission    "java.home",    "read";   
           permission    java.util.PropertyPermission    "java.class.pat",    "read";   
           permission    java.util.PropertyPermission    "user.name",    "read";   
           //對(duì)線程和線程組的操作權(quán)限
           permission    java.lang.RuntimePermission    "accessClassInPackage.sun.misc";   
           permission    java.lang.RuntimePermission    "accessClassInPackage.sun.audio";   
           permission    java.lang.RuntimePermission    "modifyThread";   
           permission    java.lang.RuntimePermission    "modifyThreadGroup";   
           permission    java.lang.RuntimePermission    "loadLibrary.*";   
           //讀寫文件的權(quán)限
           permission    java.io.FilePermission    "
    <<ALL    FILES>>",    "read";   
           permission    java.io.FilePermission    "${user.dir}${/}jmf.log",    "write";   
           permission    java.io.FilePermission    "${user.home}${/}.JMStudioCfg",    "write";   
           permission    java.net.SocketPermissio    "*",    "connect,accept";   
           permission    java.io.FilePermission    "C:\WINNT\TEMP\*",    "write";   
           permission    java.io.FilePermission    "C:\WINNT\TEMP\*",    "delete";   
           permission    java.awt.AWTPermission    "showWindowWithoutWarningBanner";   
           permission    javax.sound.sampled.AudioPermission    "record";   

        // //操作Socket端口的各種權(quán)限
           permission    java.net.SocketPermission    "-",    "listen";    
           permission    java.net.SocketPermission    "-",    "accept";    
           permission    java.net.SocketPermission    "-",    "connect";    
           permission    java.net.SocketPermission    "-",    "resolve";    
           permission    java.security.AllPermission;    
         };

       grant    signedBy    "saili"    {  
           permission    java.net.SocketPermission    "*:1024-65535",    "connect,accept,resolve";    
           permission    java.net.SocketPermission    "*:80",    "connect";    
           permission    java.net.SocketPermission    "-",    "listen,    accept,    connect,    listen,    resolve",    signedBy    "ganja";    
           permission    java.net.SocketPermission    "-",    "accept";    
           permission    java.net.SocketPermission    "-",    "connect";    
           permission    java.net.SocketPermission    "-",    "resolve";    
           permission    java.security.AllPermission;    
         };

     

    筆者在本項(xiàng)目中,為了使用客戶端的用戶設(shè)置更加的方便與簡(jiǎn)單,將上面的文件采用VBC#來(lái)做成一個(gè)小程序來(lái)寫。然后將JRE及些exe共同打成一個(gè)EXE包,當(dāng)JRE安裝完成后,此小程序負(fù)責(zé)找到JRE在操作系統(tǒng)中的安裝路徑,并在程序中寫出此java.policy文件,覆蓋原有的文件。如此一來(lái),用戶就只需安裝一個(gè)EXE文件,從而簡(jiǎn)化了安裝的操作次數(shù)。

     

    七、Applet回調(diào)服務(wù)器

     

    JavaScriptApplet之間能夠相互通訊給我們帶來(lái)了很多方便,JavaJavaScript互相補(bǔ)充,以開(kāi)發(fā)功能更完美的Web應(yīng)用程序。B/S下能夠充分利用java的優(yōu)勢(shì),給我們帶來(lái)更多的網(wǎng)絡(luò)體驗(yàn),方便用戶。筆者用的比較多的是利用Swing組件開(kāi)發(fā)的應(yīng)用程序利用Applet實(shí)現(xiàn)B/s下架構(gòu),這樣能夠充分顯示Swing組件的優(yōu)勢(shì),便于系統(tǒng)升級(jí),便于維護(hù);還有就是在WEB下,有時(shí)客戶端要使用本地的硬件資源,筆者所知道的是通過(guò)Applet來(lái)實(shí)現(xiàn),通過(guò)Applet去調(diào)用javaAPI來(lái)實(shí)現(xiàn)。 我們具體來(lái)看看JavaScriptApplet之間到底是怎樣通訊的呢?

    1.JavaScript訪問(wèn)Applet

     <applet name="appletName" ....../>//JavaScript訪問(wèn)Applet屬性。

    window.document.appletName.appletField (屬性必須是public,"window.document."也可以不寫) //JavaScript訪問(wèn)Applet方法。

    window.document.appletName.appletMethod (方法必須是public,"window.document."也可以不寫)

     

    2.Applet訪問(wèn)JavaScript

    Live Connect提供了JavaJavaScript的接口,可以允許在Java Applet小程序中使用JavaScript

    需要用到一個(gè)jar,C:\Program Files\Java\目錄下找,大概有5M多,其實(shí)就是打開(kāi)看哪個(gè)有netscape.javascript.JSObject。如果沒(méi)有裝個(gè)NetScape或從網(wǎng)上下都可以。 可以把它重命名為netscape.jar(不是必須的),一定要加入到classpath,目的是使開(kāi)發(fā)的時(shí)候能夠編譯。特別注意的是:部署時(shí)不需要包括netscape.jar,因?yàn)檎麄€(gè)包會(huì)下載到客戶端,影響速度。

    //引入netscape類
    import netscape.javascript.JSObject; 
    import netscape.javascript.JSException; 
    //可允許在小程序中處理異常事件
    public void callJavaScript(String callBackJavascript) {
        JSObject window 
    = JSObject.getWindow(this); // 獲取JavaScript窗口句柄,引用當(dāng)前文檔窗口
        JSObject docment = (JSObject) window.getMember("document");
            form
    =(JSObject)doc.getMember("textForm"); //訪問(wèn)JavaScript form對(duì)象 
            textField=(JSObject)form.getMember("textField");訪問(wèn)JavaScript text對(duì)象 
             text
    =(String) textField.getMember("value"); //獲取文本區(qū)的值
        // 調(diào)用JavaScript的alert()方法
        // window.eval("alert(\"This alert comes from Java!\")");
        window.call(callBackJavascript, null);// 參數(shù)用數(shù)組的形式表示。
        }


    待續(xù)
    ......

    評(píng)論

    # re: 用Java實(shí)現(xiàn)FTP批量大文件上傳下載(四)   回復(fù)  更多評(píng)論   

    2013-02-21 18:28 by herman2000
    博主厲害,樓主請(qǐng)發(fā)給我一份源代碼,學(xué)習(xí)一下,郵箱:herman2000@163.com

    # re: 用Java實(shí)現(xiàn)FTP批量大文件上傳下載(四) [未登錄](méi)  回復(fù)  更多評(píng)論   

    2013-09-30 09:22 by 小白
    718589908@qq.com 拜托樓主了!!

    # re: 用Java實(shí)現(xiàn)FTP批量大文件上傳下載(四) [未登錄](méi)  回復(fù)  更多評(píng)論   

    2014-12-02 14:15 by 小小程序員
    498772299@qq.com求指教,求源碼
    主站蜘蛛池模板: 久久综合AV免费观看| 久久国产精品成人片免费| 毛片高清视频在线看免费观看| 亚洲成在人天堂一区二区| 丰满人妻一区二区三区免费视频| 亚洲成人高清在线| 一二三四在线观看免费中文在线观看| 国产嫩草影院精品免费网址| 精品久久久久久亚洲中文字幕| 免费看国产一级特黄aa大片| 男女男精品网站免费观看| 久久久久亚洲精品无码网址| 中国一级特黄高清免费的大片中国一级黄色片 | 久青草视频在线观看免费| 狠狠综合久久综合88亚洲| 国产免费无码一区二区 | 无码国产精品一区二区免费3p| 国产亚洲成av人片在线观看 | 在线观看成人免费视频不卡| 亚洲日韩国产精品乱-久| 日本人的色道www免费一区| 欧亚一级毛片免费看| 亚洲情XO亚洲色XO无码| 日韩插啊免费视频在线观看| 亚洲六月丁香六月婷婷蜜芽| 最近中文字幕无吗免费高清| 老司机免费午夜精品视频| 亚洲人成人一区二区三区| 亚洲成人免费在线观看| 亚洲最大中文字幕无码网站| 免费a级毛片视频| 久久99毛片免费观看不卡| 亚洲区视频在线观看| 国产成人无码区免费A∨视频网站| 五月天婷婷精品免费视频| 亚洲国产综合专区电影在线| 成人免费a级毛片无码网站入口| 曰韩无码AV片免费播放不卡 | 亚洲国产乱码最新视频| 亚洲国产精品无码久久九九 | 日韩人妻无码精品久久免费一|