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

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

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

    MDA/MDD/TDD/DDD/DDDDDDD
    posts - 536, comments - 111, trackbacks - 0, articles - 0
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    2017年9月27日

    System.out.println("availableLocales :"+  Locale.getAvailableLocales().length);

    Locale[] arr=Locale.getAvailableLocales();
    Arrays.sort(arr, new Comparator<Locale>() {
    @Override
    public int compare(Locale o1, Locale o2) {
    return o1.getLanguage().compareTo(o2.getLanguage());
    }
    });

    for(Locale l:arr){
    System.out.println("語言:"+ l.getLanguage()+" 名稱:"+l.getDisplayLanguage()
    +(StringUtils.isEmpty(l.getDisplayCountry())?"":(" 國家:"+ l.getDisplayCountry())) + " "+l.toString());
    }
    輸出如下
    availableLocales :160
    語言: 名稱:
    語言:ar 名稱:阿拉伯文 國家:阿拉伯聯合酋長國 ar_AE
    語言:ar 名稱:阿拉伯文 國家:約旦 ar_JO
    語言:ar 名稱:阿拉伯文 國家:敘利亞 ar_SY
    語言:ar 名稱:阿拉伯文 國家:巴林 ar_BH
    語言:ar 名稱:阿拉伯文 國家:沙特阿拉伯 ar_SA
    語言:ar 名稱:阿拉伯文 國家:也門 ar_YE
    語言:ar 名稱:阿拉伯文 國家:埃及 ar_EG
    語言:ar 名稱:阿拉伯文 國家:蘇丹 ar_SD
    語言:ar 名稱:阿拉伯文 國家:突尼斯 ar_TN
    語言:ar 名稱:阿拉伯文 國家:伊拉克 ar_IQ
    語言:ar 名稱:阿拉伯文 國家:摩洛哥 ar_MA
    語言:ar 名稱:阿拉伯文 國家:卡塔爾 ar_QA
    語言:ar 名稱:阿拉伯文 國家:阿曼 ar_OM
    語言:ar 名稱:阿拉伯文 ar
    語言:ar 名稱:阿拉伯文 國家:科威特 ar_KW
    語言:ar 名稱:阿拉伯文 國家:利比亞 ar_LY
    語言:ar 名稱:阿拉伯文 國家:阿爾及利亞 ar_DZ
    語言:ar 名稱:阿拉伯文 國家:黎巴嫩 ar_LB
    語言:be 名稱:白俄羅斯文 be
    語言:be 名稱:白俄羅斯文 國家:白俄羅斯 be_BY
    語言:bg 名稱:保加利亞文 bg
    語言:bg 名稱:保加利亞文 國家:保加利亞 bg_BG
    語言:ca 名稱:加泰羅尼亞文 國家:西班牙 ca_ES
    語言:ca 名稱:加泰羅尼亞文 ca
    語言:cs 名稱:捷克文 cs
    語言:cs 名稱:捷克文 國家:捷克共和國 cs_CZ
    語言:da 名稱:丹麥文 國家:丹麥 da_DK
    語言:da 名稱:丹麥文 da
    語言:de 名稱:德文 de
    語言:de 名稱:德文 國家:瑞士 de_CH
    語言:de 名稱:德文 國家:奧地利 de_AT
    語言:de 名稱:德文 國家:盧森堡 de_LU
    語言:de 名稱:德文 國家:德國 de_DE
    語言:de 名稱:德文 國家:希臘 de_GR
    語言:el 名稱:希臘文 el
    語言:el 名稱:希臘文 國家:塞浦路斯 el_CY
    語言:el 名稱:希臘文 國家:希臘 el_GR
    語言:en 名稱:英文 國家:美國 en_US
    語言:en 名稱:英文 國家:新加坡 en_SG
    語言:en 名稱:英文 國家:馬耳他 en_MT
    語言:en 名稱:英文 en
    語言:en 名稱:英文 國家:菲律賓 en_PH
    語言:en 名稱:英文 國家:新西蘭 en_NZ
    語言:en 名稱:英文 國家:南非 en_ZA
    語言:en 名稱:英文 國家:澳大利亞 en_AU
    語言:en 名稱:英文 國家:愛爾蘭 en_IE
    語言:en 名稱:英文 國家:加拿大 en_CA
    語言:en 名稱:英文 國家:印度 en_IN
    語言:en 名稱:英文 國家:英國 en_GB
    語言:es 名稱:西班牙文 國家:巴拿馬 es_PA
    語言:es 名稱:西班牙文 國家:委內瑞拉 es_VE
    語言:es 名稱:西班牙文 國家:波多黎哥 es_PR
    語言:es 名稱:西班牙文 國家:玻利維亞 es_BO
    語言:es 名稱:西班牙文 國家:阿根廷 es_AR
    語言:es 名稱:西班牙文 國家:薩爾瓦多 es_SV
    語言:es 名稱:西班牙文 es
    語言:es 名稱:西班牙文 國家:西班牙 es_ES
    語言:es 名稱:西班牙文 國家:哥倫比亞 es_CO
    語言:es 名稱:西班牙文 國家:巴拉圭 es_PY
    語言:es 名稱:西班牙文 國家:厄瓜多爾 es_EC
    語言:es 名稱:西班牙文 國家:美國 es_US
    語言:es 名稱:西班牙文 國家:危地馬拉 es_GT
    語言:es 名稱:西班牙文 國家:墨西哥 es_MX
    語言:es 名稱:西班牙文 國家:洪都拉斯 es_HN
    語言:es 名稱:西班牙文 國家:智利 es_CL
    語言:es 名稱:西班牙文 國家:多米尼加共和國 es_DO
    語言:es 名稱:西班牙文 國家:古巴 es_CU
    語言:es 名稱:西班牙文 國家:烏拉圭 es_UY
    語言:es 名稱:西班牙文 國家:哥斯達黎加 es_CR
    語言:es 名稱:西班牙文 國家:尼加拉瓜 es_NI
    語言:es 名稱:西班牙文 國家:秘魯 es_PE
    語言:et 名稱:愛沙尼亞文 et
    語言:et 名稱:愛沙尼亞文 國家:愛沙尼亞 et_EE
    語言:fi 名稱:芬蘭文 國家:芬蘭 fi_FI
    語言:fi 名稱:芬蘭文 fi
    語言:fr 名稱:法文 國家:比利時 fr_BE
    語言:fr 名稱:法文 國家:瑞士 fr_CH
    語言:fr 名稱:法文 fr
    語言:fr 名稱:法文 國家:盧森堡 fr_LU
    語言:fr 名稱:法文 國家:法國 fr_FR
    語言:fr 名稱:法文 國家:加拿大 fr_CA
    語言:ga 名稱:愛爾蘭文 ga
    語言:ga 名稱:愛爾蘭文 國家:愛爾蘭 ga_IE
    語言:hi 名稱:印地文 國家:印度 hi_IN
    語言:hi 名稱:印地文 hi
    語言:hr 名稱:克羅地亞文 國家:克羅地亞 hr_HR
    語言:hr 名稱:克羅地亞文 hr
    語言:hu 名稱:匈牙利文 hu
    語言:hu 名稱:匈牙利文 國家:匈牙利 hu_HU
    語言:in 名稱:印度尼西亞文 in
    語言:in 名稱:印度尼西亞文 國家:印度尼西亞 in_ID
    語言:is 名稱:冰島文 國家:冰島 is_IS
    語言:is 名稱:冰島文 is
    語言:it 名稱:意大利文 it
    語言:it 名稱:意大利文 國家:瑞士 it_CH
    語言:it 名稱:意大利文 國家:意大利 it_IT
    語言:iw 名稱:希伯來文 國家:以色列 iw_IL
    語言:iw 名稱:希伯來文 iw
    語言:ja 名稱:日文 國家:日本 ja_JP_JP_#u-ca-japanese
    語言:ja 名稱:日文 ja
    語言:ja 名稱:日文 國家:日本 ja_JP
    語言:ko 名稱:朝鮮文 ko
    語言:ko 名稱:朝鮮文 國家:韓國 ko_KR
    語言:lt 名稱:立陶宛文 lt
    語言:lt 名稱:立陶宛文 國家:立陶宛 lt_LT
    語言:lv 名稱:拉托維亞文(列托) lv
    語言:lv 名稱:拉托維亞文(列托) 國家:拉脫維亞 lv_LV
    語言:mk 名稱:馬其頓文 mk
    語言:mk 名稱:馬其頓文 國家:馬其頓王國 mk_MK
    語言:ms 名稱:馬來文 國家:馬來西亞 ms_MY
    語言:ms 名稱:馬來文 ms
    語言:mt 名稱:馬耳他文 國家:馬耳他 mt_MT
    語言:mt 名稱:馬耳他文 mt
    語言:nl 名稱:荷蘭文 nl
    語言:nl 名稱:荷蘭文 國家:荷蘭 nl_NL
    語言:nl 名稱:荷蘭文 國家:比利時 nl_BE
    語言:no 名稱:挪威文 國家:挪威 no_NO_NY
    語言:no 名稱:挪威文 國家:挪威 no_NO
    語言:no 名稱:挪威文 no
    語言:pl 名稱:波蘭文 國家:波蘭 pl_PL
    語言:pl 名稱:波蘭文 pl
    語言:pt 名稱:葡萄牙文 pt
    語言:pt 名稱:葡萄牙文 國家:巴西 pt_BR
    語言:pt 名稱:葡萄牙文 國家:葡萄牙 pt_PT
    語言:ro 名稱:羅馬尼亞文 國家:羅馬尼亞 ro_RO
    語言:ro 名稱:羅馬尼亞文 ro
    語言:ru 名稱:俄文 國家:俄羅斯 ru_RU
    語言:ru 名稱:俄文 ru
    語言:sk 名稱:斯洛伐克文 sk
    語言:sk 名稱:斯洛伐克文 國家:斯洛伐克 sk_SK
    語言:sl 名稱:斯洛文尼亞文 sl
    語言:sl 名稱:斯洛文尼亞文 國家:斯洛文尼亞 sl_SI
    語言:sq 名稱:阿爾巴尼亞文 sq
    語言:sq 名稱:阿爾巴尼亞文 國家:阿爾巴尼亞 sq_AL
    語言:sr 名稱:塞爾維亞文 國家:黑山 sr_ME
    語言:sr 名稱:塞爾維亞文 國家:波斯尼亞和黑山共和國 sr_BA_#Latn
    語言:sr 名稱:塞爾維亞文 國家:塞爾維亞及黑山 sr_CS
    語言:sr 名稱:塞爾維亞文 國家:波斯尼亞和黑山共和國 sr_BA
    語言:sr 名稱:塞爾維亞文 國家:黑山 sr_ME_#Latn
    語言:sr 名稱:塞爾維亞文 sr__#Latn
    語言:sr 名稱:塞爾維亞文 國家:塞爾維亞 sr_RS
    語言:sr 名稱:塞爾維亞文 sr
    語言:sr 名稱:塞爾維亞文 國家:塞爾維亞 sr_RS_#Latn
    語言:sv 名稱:瑞典文 國家:瑞典 sv_SE
    語言:sv 名稱:瑞典文 sv
    語言:th 名稱:泰文 國家:泰國 th_TH
    語言:th 名稱:泰文 th
    語言:th 名稱:泰文 國家:泰國 th_TH_TH_#u-nu-thai
    語言:tr 名稱:土耳其文 tr
    語言:tr 名稱:土耳其文 國家:土耳其 tr_TR
    語言:uk 名稱:烏克蘭文 uk
    語言:uk 名稱:烏克蘭文 國家:烏克蘭 uk_UA
    語言:vi 名稱:越南文 國家:越南 vi_VN
    語言:vi 名稱:越南文 vi
    語言:zh 名稱:中文 國家:臺灣地區 zh_TW
    語言:zh 名稱:中文 國家:香港 zh_HK
    語言:zh 名稱:中文 國家:新加坡 zh_SG
    語言:zh 名稱:中文 國家:中國 zh_CN
    語言:zh 名稱:中文 zh

    posted @ 2017-09-27 20:17 leekiang 閱讀(899) | 評論 (0)編輯 收藏

    2016年12月21日


    repositories{
    mavenCentral()
    }
    dependencies {
    compile ('com.google.android.gms:play-services-maps:10.0.1')
    }
    按以上配置,運行clean時報錯,無法加載play-services-maps 10.0.1包。
    Error:(69, 14) Failed to resolve: com.google.android.gms:play-services-maps:10.0.1
    <a href="install.m2.repo">Install Repository and sync project</a><br><a href="openFile:/Users/you/AndroidProjects/yourapp/app/build.gradle">Show in File</a><br><a href="open.dependency.in.project.structure">Show in Project Structure dialog</a>
    點擊Android Studio的提示如何修復的鏈接,就會自動下載Google的相關依賴包到本地。下載時彈出窗口中顯示的一些信息如下。

    Install Missing Componets
    SDK Path:/User/you/Library/Android/sdk

    To install:
    - SDK Patch Applier v4 (patcher;v4)
    - Google Repository (extras;google;m2repository)

    Installing SDK Patch Applier v4
    Downloading https://dl.google.com/android/repository/3534162-studio.sdk-patcher.zip
    Installing SDK Patch Applier v4 in /Users/you/Library/Android/sdk/patcher/v4
    Installation of SDK Patch Applier v4 complete.

    Installing Google Repository
    Downloading https://dl.google.com/android/repository/google_m2repository_gms_v8_rc42_wear_2b1_rc4.zip
    Installing Google Repository in /Users/you/Library/Android/sdk/extras/google/m2repository
    Installation of Google Repository complete.


    http://stackoverflow.com/questions/16978190/add-google-maps-api-v2-in-a-fragment
    http://www.joellipman.com/articles/google/android/application-development/android-os-add-googlemap-as-fragment.html
    https://www.zhihu.com/question/20892245
    http://blog.csdn.net/woshilisao/article/details/8647649 android fragment(android.support.v4.app.Fragment和android.app.Fragment區別)
    http://www.tuicool.com/articles/YFBv6nJ Introduction to Google Maps API for Android

    posted @ 2016-12-21 00:24 leekiang 閱讀(1219) | 評論 (0)編輯 收藏

    2016年11月24日


    https://github.com/lzyzsd/JsBridge  
    注意:使用lzyzsd/JsBridge  ,覆蓋WebViewClient時一定要繼承BridgeWebViewClient,否則js和java互相調用不管用
    webview.setWebViewClient(new BridgeWebViewClient(webview) 

    另外還有一個WebViewJavascriptBridge:https://github.com/gzsll/WebViewJavascriptBridge

    http://www.cnblogs.com/wingyip/p/5426477.html JsBridge實現Javascript和Java的互相調用
    http://blog.csdn.net/sk719887916/article/details/47189607 
     Android 利用WebViewJavascriptBridge 實現js和java的交互
    http://www.jb51.net/article/37208.htm Android在其他線程中更新UI線程的解決方法

    posted @ 2016-11-24 16:19 leekiang 閱讀(363) | 評論 (0)編輯 收藏

    2016年10月26日

    向下一個Activity傳遞數據(使用Bundle和Intent.putExtras)
    Intent it = new Intent(Activity.Main.this, Activity2.class);
    Bundle bundle=new Bundle();
    bundle.putString("name", "This is from MainActivity!");
    it.putExtras(bundle);       // it.putExtra("name","abc");
    startActivity(it);            // startActivityForResult(it,REQUEST_CODE);
     
    對于數據的獲取可以采用:
    Bundle bundle=getIntent().getExtras();
    String name=bundle.getString("name");

    參考:
    http://www.cnblogs.com/feisky/archive/2010/01/16/1649081.html
    http://www.cnblogs.com/tornadomeet/archive/2012/07/28/2613617.html 從一個activity跳轉到另外一個activity

    posted @ 2016-10-26 00:54 leekiang 閱讀(262) | 評論 (0)編輯 收藏

    2016年10月25日

    buildTypes {
    release {
    minifyEnabled false
    proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
    }
    minifyEnabled改為true。
    ProGuard是Android SDK附帶的。如果需要頂尖的安全性,ProGuard就力不從心了,可以使用DexGuard。

    參考:
    讀懂 Android 中的代碼混淆 http://droidyue.com/blog/2016/07/10/understanding-android-obfuscated-code-by-proguard/

    posted @ 2016-10-25 23:41 leekiang 閱讀(384) | 評論 (0)編輯 收藏

    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.activity_main);
    增加代碼requestWindowFeature(Window.FEATURE_NO_TITLE)以去掉標題欄,并且代碼放在setContentView之前,但還是報異常
    android.util.AndroidRuntimeException: requestFeature() must be called before adding content
    AppCompatActivity改為Activity才得以解決。不知道AppCompatActivity和Activity有何區別。

    參考:http://www.cnblogs.com/and_he/archive/2011/06/01/2067106.html Android中全屏或者取消標題欄

    posted @ 2016-10-25 22:38 leekiang 閱讀(544) | 評論 (0)編輯 收藏

    2016年10月24日

     首先在“設置”-“關于手機”里多次點擊【MIUI版本】進入開發者模式,但在Android Studio里運行時找不到設備,執行adb devices也看不到設備。
    在撥號界面按  *#*#717717#*#*  , 出現 Diag USB port enable。 再次執行adb devices,看到設備了,但顯示為unauthorized。
    最后發現,設置-其他高級設置-開發者選項,開啟“開發者選項”,同時開啟“USB調試”,再次執行adb devices,終于成功的顯示設備了。
     

    posted @ 2016-10-24 11:45 leekiang 閱讀(474) | 評論 (0)編輯 收藏

    2016年10月21日

    1.public boolean shouldOverrideUrlLoading(WebView view, String url) { 
           view.loadUrl(url);
           return true;
      }
    重寫shouldOverrideUrlLoading方法,返回true表示點擊鏈接是在當前webview里打開,而不是調用瀏覽器打開


    WebViewClient與WebChromeClient的區別 http://blog.csdn.net/jackyhuangch/article/details/8310033
    Android中WebView攔截替換網絡請求數據http://droidyue.com/blog/2014/11/23/block-web-resource-in-webview/
    http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2013/1010/1569.html android WebView全面總結
    自定義可下拉刷新的WebView http://www.voidcn.com/blog/Moy01/article/p-4587219.html
    android webview遠程調試http://www.cnblogs.com/carlos-guo/p/3920915.html
    http://www.udpwork.com/item/13349.html  WebView處理網頁位置請求
    http://www.cnblogs.com/over140/archive/2013/03/07/2947721.html 帶進度條的webview
    http://blog.csdn.net/u014400200/article/details/38511419 webview處理視頻
    http://blog.csdn.net/jackyhuangch/article/details/8310033 關于android WebViewClient和WebChromeClient
    http://www.weblog-life.net/entry/2016/03/12/080300 webview如何使用google地圖,日本人寫的
    http://stackoverflow.com/questions/5329662/android-webview-geolocation  
    https://github.com/delight-im/Android-AdvancedWebView 這個支持地理定位

    posted @ 2016-10-21 21:43 leekiang 閱讀(355) | 評論 (0)編輯 收藏

    2016年10月13日

    1. Android Studio2.2在mac下啟動報錯
    找不到原因,改為使用Android Studio 2.1.3
    下載地址:http://tools.android.com/download/studio/builds/2-1-3

    2. 編譯某項目報錯Could not find property 'config' on SigningConfig container
    在build.grade文件的android->signingConfigs節點下增加config配置
    android {
        signingConfigs {
            config {
                keyAlias '你的key別名'
                keyPassword '你的key密碼'
                storeFile file('你的密鑰存儲路徑')
                storePassword '你的存儲密碼'
            }
        }
    ...

    3. 編譯報錯failed to find target android-22
    /Users/username/Library/Android/sdk/platforms下發現有android-24目錄,故將編譯級別都設為24。
    修改build.grade文件的相關屬性:
    compileSdkVersion 24
    buildToolsVersion "24.0.0"
    targetSdkVersion 24
    compile 'com.android.support:appcompat-v7:24.0.0'

    4. 編譯報錯Gradle sync failed: Gradle DSL method not found: 'android()'
    刪除項目根目錄下的build.gradle文件,因為app目錄下已經有build.gradle了。
    備份下根目錄下build.gradle文件的內容:
    buildscript {
        repositories {
            jcenter()
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:1.2.3'
            // NOTE: Do not place your application dependencies here; they belong
            // in the individual module build.gradle files
        }
    }
    allprojects {
        repositories {
            jcenter()
        }
    }
    android {
        compileSdkVersion 24
    }
    dependencies {
    }

    5. 編譯報錯Plugin with id 'com.android.application' not found
    恢復項目根目錄下的build.gradle文件,將內容修改為如下:
    buildscript {
        repositories {
            mavenCentral()
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:1.2.3'
        }
    }

    6. 編譯報錯:failed to find Build Tools revision 24.0.0
    /Users/username/Library/Android/sdk/build-tools下查看自己的BuildTools版本,發現是24.0.3,然后將buildToolsVersion修改為該版本:
    buildToolsVersion "24.0.3"

    7. Android Studio編譯執行以下任務時一直等待,執行了一個小時也沒動靜。
    Executing tasks: [:app:generateDebugSources, :app:generateDebugAndroidTestSources, :app:prepareDebugUnitTestDependencies, :app:mockableAndroidJar]
    打開Preferences->Build-Excecution-Deployment->BuildTools->Gra‌​dle,勾選Offline work
    參見http://stackoverflow.com/questions/25629368/how-to-fix-android-studio-getting-stuck-executing-gradle-tasks

    8. Exception in thread "png-cruncher_5" java.lang.RuntimeException: Timed out while waiting for slave aapt process
    不知道原因,最終是通過修改SDK Build Tools為19.1.0、升級JDK由JDK7升至JDK8、增加環境變量SLAVE_AAPT_TIMEOUT=30等搞定的

    9. 如何修改SDK和JDK的路徑
    在File->Project Structure里修改

    10. 修改Android Studio中java代碼的編譯級別
    打開File --> Project Structure-->app,修改Source Compatibility和Target Compatibility

    11.如何在使用gradle時增加--stacktrace參數
    Preferences->Build-Excecution-Deployment->Compiler
    增加--info或--debug,在解決報錯時能看到更多的信息

    12. 報錯aapt ..finished with non- zero exit value 1
    找不到原因,增加編譯參數--info后發現有用的信息:invalid resource directory name: ..app\build\intermediates\res\merged\debug/values-b+sr+Latn

    13.invalid resource directory name: ..app\build\intermediates\res\merged\debug/values-b+sr+Latn
    不知道原因,將版本升級到21解決了。

    14. 編譯時報找不到AppCompatActivity類的錯誤
    改為使用:compile 'com.android.support:appcompat-v7:22.2.1'
    同時將版本由21升級到22

    15. 生成apk時報錯:Missing Gradle Project Information. Please check if the IDE successfully synchronized its state with the Gradle Project Model
    在工具欄里點擊“Sync Project with Gradle Files”按鈕

    16.導入某項目時報錯Error:Gradle version 2.14.1 is required. Current version is 2.4. If using the gradle wrapper, try editing the distributionUrl in...
    打開Android Studio的File->Project Structure,點擊Project,將Gradle version修改為2.14.1
    在/Applications/Android Studio.app/Contents/gradle下的確只有gradle-2.14.1

    25.如何修改生成的apk的名字
    http://www.jianshu.com/p/93051c9e97fb
    Android Studio如何發布APK:http://chenfeicqq.iteye.com/blog/1889160

    26. 在gradle.properties中增加android.enableBuildCache=true,貌似能加快編譯速度。

    posted @ 2016-10-13 21:25 leekiang 閱讀(3872) | 評論 (0)編輯 收藏

    2015年3月2日

    參考dubbo里的NetUtils類

    import java.net.InetAddress;
    import java.net.NetworkInterface;
    import java.util.Enumeration;
    import java.util.regex.Pattern;

    public class GetIP {
    public static void main(String[] args) {
    System.out.println(GetIP.getLocalAddress0().getHostAddress());
    }
    public static InetAddress getLocalAddress0() {
    ??????? InetAddress localAddress = null;
    ??????? try {
    ??????????? localAddress = InetAddress.getLocalHost();
    ??????????? if (isValidAddress(localAddress)) {
    ??????????????? return localAddress;
    ??????????? }
    ??????? } catch (Throwable e) {
    ??????????? System.out.println("Failed to retriving ip address, " + e.getMessage());
    ??????? }
    ??????? try {
    ??????????? Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();
    ??????????? if (interfaces != null) {
    ??????????????? while (interfaces.hasMoreElements()) {
    ??????????????????? try {
    ??????????????????????? NetworkInterface network = interfaces.nextElement();
    ??????????????????????? Enumeration<InetAddress> addresses = network.getInetAddresses();
    ??????????????????????? if (addresses != null) {
    ??????????????????????????? while (addresses.hasMoreElements()) {
    ??????????????????????????????? try {
    ??????????????????????????????????? InetAddress address = addresses.nextElement();
    ??????????????????????????????????? if (isValidAddress(address)) {
    ??????????????????????????????????????? return address;
    ??????????????????????????????????? }
    ??????????????????????????????? } catch (Throwable e) {
    ??????????????????????????????????? System.out.println("Failed to retriving ip address, " + e.getMessage());
    ??????????????????????????????? }
    ??????????????????????????? }
    ??????????????????????? }
    ??????????????????? } catch (Throwable e) {
    ??????????????????????? System.out.println("Failed to retriving ip address, " + e.getMessage());
    ??????????????????? }
    ??????????????? }
    ??????????? }
    ??????? } catch (Throwable e) {
    ??????????? System.out.println("Failed to retriving ip address, " + e.getMessage());
    ??????? }
    ??????? System.out.println("Could not get local host ip address, will use 127.0.0.1 instead.");
    ??????? return localAddress;
    ??? }
    ??? private static boolean isValidAddress(InetAddress address) {
    ??????? if (address == null || address.isLoopbackAddress())
    ??????????? return false;
    ??????? String name = address.getHostAddress();
    ??????? return (name != null
    ??????????????? && ! ANYHOST.equals(name)
    ??????????????? && ! LOCALHOST.equals(name)
    ??????????????? && IP_PATTERN.matcher(name).matches());
    ??? }
    ?? ?
    ??? public static final String LOCALHOST = "127.0.0.1";

    ??? public static final String ANYHOST = "0.0.0.0";
    ?? ?
    ??? private static final Pattern IP_PATTERN = Pattern.compile("\\d{1,3}(\\.\\d{1,3}){3,5}$");
    }

    posted @ 2015-03-02 06:29 leekiang 閱讀(662) | 評論 (0)編輯 收藏

    主站蜘蛛池模板: 中文日韩亚洲欧美制服| 日韩免费高清播放器| 丰满人妻一区二区三区免费视频| 91av在线免费视频| 日韩一区二区三区免费体验| 亚洲AV无码专区国产乱码4SE| 亚洲av最新在线观看网址| h视频在线免费看| 在线精品亚洲一区二区小说| 亚洲熟女综合色一区二区三区| 性xxxxx大片免费视频| 国产福利电影一区二区三区,亚洲国模精品一区| 亚洲一区免费在线观看| 99精品视频在线免费观看| 亚洲日韩精品无码一区二区三区| 久久精品亚洲日本波多野结衣| 67194熟妇在线永久免费观看 | 亚洲精品中文字幕无乱码麻豆| 99麻豆久久久国产精品免费| 日本无卡码免费一区二区三区| 一区二区三区免费高清视频| 亚洲国产精品视频| 午夜亚洲国产精品福利| 无码高潮少妇毛多水多水免费| 亚洲精品亚洲人成在线观看麻豆 | 好爽…又高潮了免费毛片| 亚洲av乱码一区二区三区香蕉 | 免费黄色网址网站| 老司机福利在线免费观看| 又粗又硬免费毛片| 美女扒开尿口给男人爽免费视频| 亚洲国产精品成人久久| 暖暖免费日本在线中文| 亚洲国产成人久久综合碰碰动漫3d| 免费91麻豆精品国产自产在线观看 | 免费人妻无码不卡中文字幕系| 久久久久亚洲精品天堂| 99在线观看视频免费| 羞羞漫画在线成人漫画阅读免费| 777亚洲精品乱码久久久久久 | 日本亚洲视频在线 |