锘??xml version="1.0" encoding="utf-8" standalone="yes"?>日韩在线三区,在线一区二区三区四区,在线视频尤物http://www.aygfsteel.com/Todd/category/41701.htmlpoint and net zh-cnWed, 25 Nov 2009 18:42:27 GMTWed, 25 Nov 2009 18:42:27 GMT60jni 涓娉ㄦ剰鐨勯棶棰?/title><link>http://www.aygfsteel.com/Todd/archive/2009/11/24/303474.html</link><dc:creator>Todd</dc:creator><author>Todd</author><pubDate>Tue, 24 Nov 2009 07:03:00 GMT</pubDate><guid>http://www.aygfsteel.com/Todd/archive/2009/11/24/303474.html</guid><wfw:comment>http://www.aygfsteel.com/Todd/comments/303474.html</wfw:comment><comments>http://www.aygfsteel.com/Todd/archive/2009/11/24/303474.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/Todd/comments/commentRss/303474.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/Todd/services/trackbacks/303474.html</trackback:ping><description><![CDATA[<p>JNI 鐨勭被鍨嬪拰鏁版嵁緇撴瀯<br /> Java 綾誨瀷  鏈湴綾誨瀷  璇存槑 <br /> boolean  jboolean  鏃犵鍙鳳紝8 浣?<br /> byte     jbyte  鏃犵鍙鳳紝8 浣?<br /> char     jchar  鏃犵鍙鳳紝16 浣?<br /> short    jshort  鏈夌鍙鳳紝16 浣?<br /> int      jint  鏈夌鍙鳳紝32 浣?<br /> long     jlong  鏈夌鍙鳳紝64 浣?<br /> float    jfloat  32 浣?<br /> double    jdouble  64 浣?<br /> void     void  N/A<br /> 鐢變簬JVM涓紝浣跨敤緇熶竴鐨刄TF-8緙栫爜錛宩ava浼犲叆鐨凷tring鍙傛暟錛屽湪c鏂囦歡涓jni杞崲涓簀string鐨勬暟鎹被鍨嬶紝鍦╟鏂囦歡涓0鏄巆har* psz錛岀劧鍚巔sz = (char*)(*env)->GetStringUTFChars(env, jstring, NULL);c++鐨勬搷浣滅畝鍗曚簺錛宔nv->GetStringUTFChars( jstring, NULL);娉ㄦ剰浣跨敤瀹屽悗錛岃繍琛?*env)->ReleaseStringUTFChars(env, jstring, psz);<br /> 灝嗕竴涓猚鐨勫瓧絎︿覆杞負jstring錛?<br /> static char lastfile[80];</p> <p>  JNIEXPORT jstring JNICALL Java_ReadFile_lastFile<br />     (JNIEnv *env, jobject jobj) {<br />      return((*env)->NewStringUTF(env, lastfile));<br />   }<br /> 渚嬪瓙<br /> JNIEXPORT jstring JNICALL<br /> Java_Prompt_getLine(JNIEnv *env, jobject obj, jstring prompt)<br /> {<br /> char buf[128];<br /> const jbyte *str;<br /> str = (*env)->GetStringUTFChars(env, prompt, NULL);<br /> if (str == NULL) {<br /> return NULL; /* OutOfMemoryError already thrown */<br /> }<br /> printf("%s", str);<br /> (*env)->ReleaseStringUTFChars(env, prompt, str);<br /> /* We assume here that the user does not type more than<br /> * 127 characters */<br /> scanf("%s", buf);<br /> return (*env)->NewStringUTF(env, buf);<br /> }<br /> 濡傛灉浣跨敤Unicode緙栫爜錛屼笉闇瑕佷嬌鐢║TF-8澶勭悊錛屼嬌鐢ㄥ涓嬫柟娉?br /> JNIEXPORT jbyteArray JNICALL Java_ReadFile_loadFile<br />     (JNIEnv * env, jobject jobj, jstring name) {<br />       caddr_t m;<br />       jbyteArray jb;<br />       struct stat finfo;<br />       jboolean iscopy;<br />       const jchar *mfile = (*env)->GetStringChars(env, <br />   name, &iscopy);<br />   //...<br />       (*env)->ReleaseStringChars(env, name, mfile);<br /> 浼犻扐rray<br /> boolean</p> <p> public static void setArray( boolean[] ba )<br />   {<br />     for( int i=0; i < ba.length; i++ )<br />       ba[i] = true;<br />     setArray0( ba );<br />   }<br /> <br />   private static native void setArray0( boolean[] ba );</p> <p>甯冨皵鍨嬫暟緇勮鍒濆鍖栦負 true錛屾湰鍦版柟娉曞皢鎶婄壒瀹氱殑鍏冪礌璁劇疆涓?false銆傚悓鏃訛紝鍦?Java 婧愪唬鐮佷腑錛屾垜浠彲浠ユ洿鏀?main 浠ヤ嬌鍏跺寘鍚祴璇曚唬鐮侊細</p> <p>    boolean[] ba = new boolean[5];<br />     MyNative.setArray( ba );<br />     for( int i=0; i < ba.length; i++ )<br />       System.out.println( ba[i] );</p> <p>鍦ㄧ紪璇戞簮浠g爜騫舵墽琛?javah 浠ュ悗錛孧yNative.h 澶存枃浠跺寘鍚互涓嬬殑鍘熷瀷錛?/p> <p>/*<br />  * Class:     MyNative<br />  * Method:    setArray0<br />  * Signature: ([Z)V<br />  */<br /> JNIEXPORT void JNICALL Java_MyNative_setArray0<br />   (JNIEnv *, jclass, jbooleanArray);</p> <p>甯冨皵鍨嬫暟緇勬槸浣滀負鍗曚釜鍚嶄負 jbooleanArray 鐨勭被鍨嬪垱寤虹殑銆?<br /> 鍩烘湰綾誨瀷鏈夊畠浠嚜宸茬殑鏁扮粍綾誨瀷錛屽 jintArray 鍜?jcharArray銆?<br /> 闈炲熀鏈被鍨嬬殑鏁扮粍浣跨敤 jobjectArray 綾誨瀷銆備笅涓涓ず渚嬩腑鍖呮嫭涓涓?jobjectArray銆傝繖涓竷灝旀暟緇勭殑鏁扮粍鍏冪礌鏄氳繃 JNI 鏂規硶 GetBooleanArrayElements 鏉ヨ闂殑銆?<br /> 閽堝姣忕鍩烘湰綾誨瀷閮芥湁絳変環鐨勬柟娉曘傝繖涓湰鍦版柟娉曟槸濡備笅瀹炵幇鐨勶細 </p> <p>JNIEXPORT void JNICALL Java_MyNative_setArray0<br />   (JNIEnv *env, jclass cls, jbooleanArray ba)<br /> {<br />   jboolean* pba = (*env)->GetBooleanArrayElements( env, ba, 0 );<br />   jsize len = (*env)->GetArrayLength(env, ba);<br />   int i=0;<br />   // 鏇存敼鍋舵暟鏁扮粍鍏冪礌<br />   for( i=0; i < len; i+=2 )<br />     pba[i] = JNI_FALSE;<br />   (*env)->ReleaseBooleanArrayElements( env, ba, pba, 0 );<br /> }</p> <p>鎸囧悜甯冨皵鍨嬫暟緇勭殑鎸囬拡鍙互浣跨敤 GetBooleanArrayElements 鑾峰緱銆?<br /> 鏁扮粍澶у皬鍙互鐢?GetArrayLength 鏂規硶鑾峰緱銆備嬌鐢?ReleaseBooleanArrayElements 鏂規硶閲婃斁鏁扮粍銆傚氨鍙互璇誨彇鍜屼慨鏀規暟緇勫厓绱犵殑鍊間簡銆?br /> int 鏁扮粍</p> <p>class IntArray {<br />     private native int sumArray(int[] arr);<br />     public static void main(String[] args) {<br />         IntArray p = new IntArray();<br />         int arr[] = new int[10];<br />         for (int i = 0; i < 10; i++) {<br />             arr[i] = i;<br />         }<br />         int sum = p.sumArray(arr);<br />         System.out.println("sum = " + sum);<br />     }</p> <p>    static {<br />         System.loadLibrary("jnistudy");<br />     }<br /> }</p> <p>jni鐨刢紼嬪簭</p> <p>#include <jni.h><br /> #include <stdio.h><br /> #include "IntArray.h"</p> <p>JNIEXPORT jint JNICALL <br /> Java_IntArray_sumArray(JNIEnv *env, jobject obj, jintArray arr)<br /> {<br />     jint *carr;<br />     jint i, sum = 0;<br />     carr = (*env)->GetIntArrayElements(env, arr, NULL);<br />     if (carr == NULL) {<br />         return 0; /* exception occurred */<br />     }</p> <p>    for (i=0; i<10; i++) {<br />         sum += carr[i];<br />     }</p> <p>    (*env)->ReleaseIntArrayElements(env, arr, carr, 0);<br />     return sum;<br /> }<br /> </p> <p>GetIntArrayRegion寰楀埌鏁扮粍錛孯eleaseIntArrayElements閲婃斁璧勬簮錛孏etArrayLength寰楀埌鏁扮粍鐨勯暱搴︼紝SetIntArrayRegion淇敼鏁扮粍鍏冪礌鐨勫箋?/p> <p>澶氫綅int 鏁扮粍<br /> <br /> class ObjectArrayTest {<br />     private static native int[][] initInt2DArray(int size);<br />     public static void main(String[] args) {<br />         int[][] i2arr = initInt2DArray(3);<br />         for (int i = 0; i < 3; i++) {<br />             for (int j = 0; j < 3; j++) {<br />                  System.out.print(" " + i2arr[i][j]);<br />             }<br />             System.out.println();<br />         }<br />     }<br />     static {<br />         System.loadLibrary("jnistudy");<br />     }<br /> }</p> <p>jni鐨勪唬鐮?br /> #include <jni.h><br /> #include <stdio.h><br /> #include "ObjectArrayTest.h"</p> <p>JNIEXPORT jobjectArray JNICALL<br /> Java_ObjectArrayTest_initInt2DArray(JNIEnv *env,<br />                                    jclass cls,<br />                                    jint size)<br /> {<br />     jobjectArray result;<br />     int i;<br />     jclass intArrCls = (*env)->FindClass(env, "[I");<br />     if (intArrCls == NULL) {<br />         return NULL; /* exception thrown */<br />     }<br />     result = (*env)->NewObjectArray(env, size, intArrCls, NULL);<br />     if (result == NULL) {<br />         return NULL; /* out of memory error thrown */<br />     }<br />     for (i = 0; i < size; i++) {<br />         jint tmp[256];  /* make sure it is large enough! */<br />         int j;<br />         jintArray iarr = (*env)->NewIntArray(env, size);<br />         if (iarr == NULL) {<br />             return NULL; /* out of memory error thrown */<br />         }<br />         for (j = 0; j < size; j++) {<br />             tmp[j] = i + j;<br />         }<br />         (*env)->SetIntArrayRegion(env, iarr, 0, size, tmp);<br />         (*env)->SetObjectArrayElement(env, result, i, iarr);<br />         (*env)->DeleteLocalRef(env, iarr);<br />     }<br />     return result;<br /> }<br /> Get/SetObjectArrayElement寰楀埌鍜岃緗暟緇勭殑鍏冪礌鐨勫箋?br /> 浼犻?Java String 鏁扮粍 </p> <p>鏈緥灝嗛氳繃鏈甯哥敤鐨勯潪鍩烘湰綾誨瀷錛孞ava String錛岃鏄庡浣曡闂潪鍩烘湰瀵硅薄鐨勬暟緇勩傚瓧絎︿覆鏁扮粍琚紶閫掔粰鏈湴鏂規硶錛岃屾湰鍦版柟娉曞彧鏄皢瀹冧滑鏄劇ず鍒版帶鍒跺彴涓娿?<br /> MyNative 綾誨畾涔変腑娣誨姞浜嗕互涓嬪嚑涓柟娉曪細 </p> <p>  public static void showStrings( String[] sa )<br />   {<br />     showStrings0( sa );<br />   }<br />   private static void showStrings0( String[] sa );</p> <p>嫻嬭瘯<br />   String[] sa = new String[] { "Hello,", "world!", "JNI", "is", "fun." };<br />   MyNative.showStrings( sa );</p> <p>c浠g爜涓紝鏈湴鏂規硶鍒嗗埆璁塊棶姣忎釜鍏冪礌錛?/p> <p>JNIEXPORT void JNICALL Java_MyNative_showStrings0<br />   (JNIEnv *env, jclass cls, jobjectArray sa)<br /> {<br />   int len = (*env)->GetArrayLength( env, sa );<br />   int i=0;<br />   for( i=0; i < len; i++ )<br />   {<br />     jobject obj = (*env)->GetObjectArrayElement(env, sa, i);<br />     jstring str = (jstring)obj;<br />     const char* szStr = (*env)->GetStringUTFChars( env, str, 0 );<br />     printf( "%s ", szStr );<br />     (*env)->ReleaseStringUTFChars( env, str, szStr );<br />   }<br />   printf( "\n" );<br /> }</p> <p>鏁扮粍鍏冪礌鍙互閫氳繃 GetObjectArrayElement 璁塊棶銆?鍥犱負榪斿洖鍊兼槸 jstring 綾誨瀷錛屾墍浠ュ彲浠ュ畨鍏ㄥ湴灝嗗畠浠?jobject 綾誨瀷杞崲涓?jstring 綾誨瀷銆?/p> <p>榪斿洖 Java String 鏁扮粍 <br /> 鍦ㄦ湰鍦頒唬鐮佷腑鍒涘緩涓涓瓧絎︿覆鏁扮粍騫跺皢瀹冭繑鍥炵粰 Java 璋冪敤鑰呫侻yNative.java 涓坊鍔犱簡浠ヤ笅鍑犱釜鏂規硶錛?/p> <p>  public static String[] getStrings()<br />   {<br />     return getStrings0();<br />   }<br />   private static native String[] getStrings0();</p> <p>浣跨敤showStrings 灝?getStrings 鐨勮緭鍑烘樉紺哄嚭鏉ワ細 </p> <p>  MyNative.showStrings( MyNative.getStrings() );</p> <p>瀹炵幇鐨勬湰鍦版柟娉曡繑鍥炰簲涓瓧絎︿覆銆?/p> <p>JNIEXPORT jobjectArray JNICALL Java_MyNative_getStrings0<br />   (JNIEnv *env, jclass cls)<br /> {<br />   jstring      str;<br />   jobjectArray args = 0;<br />   jsize        len = 5;<br />   char*        sa[] = { "Hello,", "world!", "JNI", "is", "fun" };<br />   int          i=0;<br />   args = (*env)->NewObjectArray(env, len, (*env)->FindClass(env, "java/lang/String"), 0);<br />   for( i=0; i < len; i++ )<br />   {<br />     str = (*env)->NewStringUTF( env, sa[i] );<br />     (*env)->SetObjectArrayElement(env, args, i, str);<br />   }<br />   return args;<br /> }</p> <p>瀛楃涓叉暟緇勬槸閫氳繃璋冪敤 NewObjectArray 鍒涘緩鐨勶紝鍚屾椂浼犻掍簡 String 綾誨拰鏁扮粍闀垮害涓や釜鍙傛暟銆侸ava String 鏄嬌鐢?NewStringUTF 鍒涘緩鐨勩係tring 鍏冪礌鏄嬌鐢?SetObjectArrayElement 瀛樺叆鏁扮粍涓殑銆?br /> <br /> <br /> 鍙﹀瑕侀氳繃jni鏉ユ敼鍙榡ava鐨勫弬鏁板紩鐢?渚嬪鏈夊弬鏁癹byteArray account錛屼慨鏀瑰畬account鐨勫煎悗錛宩ava瑕佽幏鍙栬鍊鹼紝鐩存帴浣跨敤<br /> jbyte* jbAccount = (env)->GetByteArrayElements(env, account, 0);<br />  char* szAccount = (char*)jbAccount;<br /> 鎸囬拡鐨勫湴鍧騫朵笉鏄痑ccount鐨勫湴鍧錛屾渶鍚庤祴涓嬪兼墠琛?br /> env->SetByteArrayRegion(account,0,strlen(szAccount),jbyte* jbAccount);</p> <img src ="http://www.aygfsteel.com/Todd/aggbug/303474.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/Todd/" target="_blank">Todd</a> 2009-11-24 15:03 <a href="http://www.aygfsteel.com/Todd/archive/2009/11/24/303474.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鐢ㄦ埛IP鍦板潃鐨勪笁涓睘鎬х殑鍖哄埆(HTTP_X_FORWARDED_FOR,HTTP_VIA,REM_addrhttp://www.aygfsteel.com/Todd/archive/2009/10/09/297590.htmlToddToddFri, 09 Oct 2009 10:06:00 GMThttp://www.aygfsteel.com/Todd/archive/2009/10/09/297590.htmlhttp://www.aygfsteel.com/Todd/comments/297590.htmlhttp://www.aygfsteel.com/Todd/archive/2009/10/09/297590.html#Feedback0http://www.aygfsteel.com/Todd/comments/commentRss/297590.htmlhttp://www.aygfsteel.com/Todd/services/trackbacks/297590.html涓銆佹病鏈変嬌鐢ㄤ唬鐞嗘湇鍔″櫒鐨勬儏鍐碉細

      REMOTE_ADDR = 鎮ㄧ殑 IP
      HTTP_VIA = 娌℃暟鍊兼垨涓嶆樉紺?br />       HTTP_X_FORWARDED_FOR = 娌℃暟鍊兼垨涓嶆樉紺?/p>

浜屻佷嬌鐢ㄩ忔槑浠g悊鏈嶅姟鍣ㄧ殑鎯呭喌錛歍ransparent Proxies

      REMOTE_ADDR = 鏈鍚庝竴涓唬鐞嗘湇鍔″櫒 IP
      HTTP_VIA = 浠g悊鏈嶅姟鍣?IP
      HTTP_X_FORWARDED_FOR = 鎮ㄧ殑鐪熷疄 IP 錛岀粡榪囧涓唬鐞嗘湇鍔″櫒鏃訛紝榪欎釜鍊肩被浼煎涓嬶細203.98.182.163, 203.98.182.163, 203.129.72.215銆?/p>

   榪欑被浠g悊鏈嶅姟鍣ㄨ繕鏄皢鎮ㄧ殑淇℃伅杞彂緇欐偍鐨勮闂璞★紝鏃犳硶杈懼埌闅愯棌鐪熷疄韜喚鐨勭洰鐨勩?/p>

涓夈佷嬌鐢ㄦ櫘閫氬尶鍚嶄唬鐞嗘湇鍔″櫒鐨勬儏鍐碉細Anonymous Proxies

      REMOTE_ADDR = 鏈鍚庝竴涓唬鐞嗘湇鍔″櫒 IP
      HTTP_VIA = 浠g悊鏈嶅姟鍣?IP
      HTTP_X_FORWARDED_FOR = 浠g悊鏈嶅姟鍣?IP 錛岀粡榪囧涓唬鐞嗘湇鍔″櫒鏃訛紝榪欎釜鍊肩被浼煎涓嬶細203.98.182.163, 203.98.182.163, 203.129.72.215銆?/p>

   闅愯棌浜嗘偍鐨勭湡瀹濱P錛屼絾鏄悜璁塊棶瀵硅薄閫忛湶浜嗘偍鏄嬌鐢ㄤ唬鐞嗘湇鍔″櫒璁塊棶浠栦滑鐨勩?/p>

鍥涖佷嬌鐢ㄦ楠楁т唬鐞嗘湇鍔″櫒鐨勬儏鍐碉細Distorting Proxies

      REMOTE_ADDR = 浠g悊鏈嶅姟鍣?IP
      HTTP_VIA = 浠g悊鏈嶅姟鍣?IP
      HTTP_X_FORWARDED_FOR = 闅忔満鐨?IP 錛岀粡榪囧涓唬鐞嗘湇鍔″櫒鏃訛紝榪欎釜鍊肩被浼煎涓嬶細203.98.182.163, 203.98.182.163, 203.129.72.215銆?/p>

   鍛婅瘔浜嗚闂璞℃偍浣跨敤浜嗕唬鐞嗘湇鍔″櫒錛屼絾緙栭犱簡涓涓櫄鍋囩殑闅忔満IP浠f浛鎮ㄧ殑鐪熷疄IP嬈洪獥瀹冦?/p>

浜斻佷嬌鐢ㄩ珮鍖垮悕浠g悊鏈嶅姟鍣ㄧ殑鎯呭喌錛欻igh Anonymity Proxies (Elite proxies)

      REMOTE_ADDR = 浠g悊鏈嶅姟鍣?IP
      HTTP_VIA = 娌℃暟鍊兼垨涓嶆樉紺?br />       HTTP_X_FORWARDED_FOR = 娌℃暟鍊兼垨涓嶆樉紺?錛岀粡榪囧涓唬鐞嗘湇鍔″櫒鏃訛紝榪欎釜鍊肩被浼煎涓嬶細203.98.182.163, 203.98.182.163, 203.129.72.215銆?/p>

   瀹屽叏鐢ㄤ唬鐞嗘湇鍔″櫒鐨勪俊鎭浛浠d簡鎮ㄧ殑鎵鏈変俊鎭紝灝辮薄鎮ㄥ氨鏄畬鍏ㄤ嬌鐢ㄩ偅鍙頒唬鐞嗘湇鍔″櫒鐩存帴璁塊棶瀵硅薄銆?/p>

Todd 2009-10-09 18:06 鍙戣〃璇勮
]]>
主站蜘蛛池模板: 西充县| 张家口市| 本溪市| 邵阳市| 高要市| 上杭县| 黄大仙区| 天全县| 新竹市| 满城县| 神农架林区| 精河县| 昌江| 滨州市| 三门峡市| 顺昌县| 门源| 咸阳市| 遵义县| 宁阳县| 巴东县| 瓦房店市| 和林格尔县| 吉安市| 南和县| 成武县| 辽阳市| 天峨县| 五常市| 建阳市| 浪卡子县| 万年县| 锦屏县| 长治市| 丽水市| 淮南市| 延吉市| 咸丰县| 光山县| 沂南县| 晋江市|