<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 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    用Java實現FTP批量大文件上傳下載(四)

    Posted on 2007-10-22 09:47 詩特林 閱讀(7738) 評論(3)  編輯  收藏 所屬分類: Socket
                                                              用Java實現FTP批量大文件上傳下載(四) 

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

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

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

    為了讓各位能更加明白,先說一下原理。假設現在有一個局域網,主機為A,局域網內除了主機外,還有一臺機器為BB機器當然是通過主機A上網的。另外還有一臺可上網的機器為C,與AB并不在一個局域網內。通常情況下,C機器只能訪問到A主機,而無法穿透局域網,訪問到B。而通過端口映射后,當C機器訪問主機A的指定端口時,主機A上的端口映射器就起作用了,它會把指定端口上的數據轉到局域網內另一臺機器的指定端口上,從而實現訪問內網機器的目的。這樣說,大家明白了吧。至于具體的如何進行配置,筆者認為應該不是件很難的事情,再說,網上這樣的圖形解釋很多,請大家參考網絡上的文章進行設置。

    當然,實現直接訪問內網的優點是顯而易見的,別的不說,起碼FTP資源是被充分利用了。不過必須提醒讀者的是,直接訪問內網可能使內網的安全性受到威脅。筆者相信大部分朋友對主機安全的重要性還是重視的,但往往會忽略內網機器的安全設置。一旦你實現了直接訪問內網,那就必須像對待主機一樣對待內網機器,否則你的整個網絡將可能處于危險狀態。

    六、    訪問客戶端資源

     

    Java應用程序環境的安全策略,對于不同的代碼所擁有的不同資源的許可,它由一個Policy對象來表達。為了讓Applet(或者運行在 SecurityManager下的一個應用程序)能夠執行受保護的行為,例如讀寫文件,Applet(或 Java應用程序)必須獲得那項操作的許可,安全策略文件就是用來實現這些許可。

    Policy對象可能有多個實體,雖然任何時候只能有一個起作用。當前安裝的Policy對象,在程序中可以通過調用getPolicy方法得到,也可以通過調用setPolicy方法改變。Policy對象評估整個策略,返回一個適當的Permissions對象,詳細說明哪些代碼可以訪問哪些資源。策略文件可以儲存在無格式的ASCII文件或Policy類的二進制文件或數據庫中。本文僅討論無格式的ASCII文件的形式。

    在實際使用中,我們可以不需要自己手動去編寫那么復雜的java.policy文件,特別是在不使用數字簽名時。這時,我們完全可以借鑒JRE提供給我們的現成的 C:\Program Files\Java\jre1.5.0_12\lib\security\java.policy文件,根據我們的需要做相應的修改,本文就針對不使用數字簽名情況編寫安全策略文件。下面,是一個完整的在Windows NT/XP下使用的java.policy文件。在文件中,分別使用注釋的形式說明了每個“permission”記錄的用途。當然,不同的程序對資源訪問權限的要求可能不一樣,可以根據項目需要進行調整與選擇。

    grant    { 
           //對系統和用戶目錄“讀”的權限
           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";   
           //對線程和線程組的操作權限
           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.*";   
           //讀寫文件的權限
           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端口的各種權限
           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;    
         };

     

    筆者在本項目中,為了使用客戶端的用戶設置更加的方便與簡單,將上面的文件采用VBC#來做成一個小程序來寫。然后將JRE及些exe共同打成一個EXE包,當JRE安裝完成后,此小程序負責找到JRE在操作系統中的安裝路徑,并在程序中寫出此java.policy文件,覆蓋原有的文件。如此一來,用戶就只需安裝一個EXE文件,從而簡化了安裝的操作次數。

     

    七、Applet回調服務器

     

    JavaScriptApplet之間能夠相互通訊給我們帶來了很多方便,JavaJavaScript互相補充,以開發功能更完美的Web應用程序。B/S下能夠充分利用java的優勢,給我們帶來更多的網絡體驗,方便用戶。筆者用的比較多的是利用Swing組件開發的應用程序利用Applet實現B/s下架構,這樣能夠充分顯示Swing組件的優勢,便于系統升級,便于維護;還有就是在WEB下,有時客戶端要使用本地的硬件資源,筆者所知道的是通過Applet來實現,通過Applet去調用javaAPI來實現。 我們具體來看看JavaScriptApplet之間到底是怎樣通訊的呢?

    1.JavaScript訪問Applet

     <applet name="appletName" ....../>//JavaScript訪問Applet屬性。

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

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

     

    2.Applet訪問JavaScript

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

    需要用到一個jar,C:\Program Files\Java\目錄下找,大概有5M多,其實就是打開看哪個有netscape.javascript.JSObject。如果沒有裝個NetScape或從網上下都可以。 可以把它重命名為netscape.jar(不是必須的),一定要加入到classpath,目的是使開發的時候能夠編譯。特別注意的是:部署時不需要包括netscape.jar,因為整個包會下載到客戶端,影響速度。

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


    待續
    ......

    評論

    # re: 用Java實現FTP批量大文件上傳下載(四)   回復  更多評論   

    2013-02-21 18:28 by herman2000
    博主厲害,樓主請發給我一份源代碼,學習一下,郵箱:herman2000@163.com

    # re: 用Java實現FTP批量大文件上傳下載(四) [未登錄]  回復  更多評論   

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

    # re: 用Java實現FTP批量大文件上傳下載(四) [未登錄]  回復  更多評論   

    2014-12-02 14:15 by 小小程序員
    498772299@qq.com求指教,求源碼
    主站蜘蛛池模板: 国产亚洲精品一品区99热| 久久久久亚洲精品天堂| 久久精品亚洲一区二区| 亚洲精品久久无码av片俺去也 | a级成人免费毛片完整版| 曰皮全部过程视频免费国产30分钟| 亚洲欧洲日韩不卡| 男女午夜24式免费视频| 亚洲国产成人五月综合网| 亚洲熟妇无码AV不卡在线播放 | 永久免费av无码不卡在线观看| 亚洲av永久无码精品漫画| 女性无套免费网站在线看| 亚洲一区电影在线观看| 中文字幕视频免费| 亚洲精品**中文毛片| 免费观看国产网址你懂的| 久久久无码精品亚洲日韩按摩| 国产免费人人看大香伊| 粉色视频免费入口| 免费少妇a级毛片人成网| 国产黄片不卡免费| 亚洲精品午夜无码专区| 成人片黄网站A毛片免费| 羞羞视频网站免费入口| 亚洲第一黄色网址| 最新中文字幕电影免费观看| 国产亚洲精品仙踪林在线播放| 精品无码一区二区三区亚洲桃色| 亚洲国产午夜中文字幕精品黄网站| 久久免费观看视频| 亚洲熟妇无码久久精品| 亚洲女同成av人片在线观看| 亚洲视频在线观看免费| 久久精品国产亚洲av麻豆蜜芽| 亚洲精品无码午夜福利中文字幕 | www成人免费观看网站| 亚洲精品色午夜无码专区日韩| 日本久久久免费高清| 无码一区二区三区AV免费| 亚洲成人在线免费观看|