JNI¸¦ ÇÁ·Î±×·¥À» ÀÛ¼ºÇϴµ¥ Data°¡ Àß ³Ñ¾î°¡Áö ¾Ê¾Æ¼­¿ä..


[ ´ÙÀ½ ±Ûµé ] [ À̾ ±Û¿Ã¸®±â(´äÇϱâ) ] [ ÀÚ¹Ù ¹¯°í ´äÇϱâ ]

±Û¾´ÀÌ :ºñ¾È 1999³â 11¿ù 29ÀÏ 17:09:24

¾È³çÇϽʴϱî!


³¯¾¾°¡ ¸¹ÀÌ ½Ò½ÒÇѵ¥ °Ç°­µéÀº ¾î¶²Áö °ÆÁ¤À̱º¿ä.
´Ùµé °Ç°­Çϼ¼¿ä..


´Ù¸§ÀÌ ¾Æ´Ï¶ó Àú°¡ Áú¹®ÇÏ°íÀÚ ÇÏ´Â ³»¿ëÀº¿ä..
Áö±Ý C++·Î ÀÛ¼ºµÈ dllÀÌ À־ ÀÌ dllÀ» ÀÌ¿ëÇÑ JNI ÇÁ·Î±×·¥À» ÀÛ¼ºÇÏ°í ÀÖ½À´Ï´Ù.


dllÀÇ ÇÔ¼ö¸¦ È£ÃâÇϴµ¥ ±× ÇÔ¼öÀÇ return °ªÀÌ byte[]ÀÔ´Ï´Ù.
C typeÀÇ byte[]ÀÔ´Ï´Ù.
±×·¡¼­ java¼Ò½º¿¡¼­µµ byte[]·Î ±× °ªÀ» °¡Á®¿À·Á°í Çϴµ¥ °ªÀÌ Á¦´ë·Î Àü´ÞµÇÁö ¾Ê´Â±º¿ä.
JNI ¼Ò½ººÎºÐ¿¡¼± byte[]¿¡ dllÀ» È£ÃâÇؼ­ ¹ÞÀº °ªÀÌ Àß µé¾î ÀÖ½À´Ï´Ù..
±×·±µ¥ ±× °ªÀ» ³Ñ°ÜÁÖ¸é °ªÀÌ ¾ø½À´Ï´Ù..
Á¶±Ý ÀÌÇصÇÁö´Â ¾ÊÁö¸¸ ±×·¸½À´Ï´Ù..
¹°·Ð Á¦°¡ ¾î´ÀºÎºÐÀ» Àß ÀÌÇØÇÏÁö ¸øÇؼ­ ±×·¸°ÚÁö¸¸¿ä.. C¸¦ ¸ô¶ó¼­¸®..


Á¦ ¼³¸íÀÌ ÀÌÇØ°¡ µÇ¼Ì´ÂÁö ¸ð¸£°Ú±º¿ä..
¼Ò½º¸¦ ÷ºÎÇÏ°Ú½À´Ï´Ù..


IMSCall.java ¼Ò½ººÎºÐ
IMSCall imscall = new IMSCall() -- IMSCallÀº JNI¸¦ ±¸ÇöÇÑ cppÈ­ÀÏ ÀÔ´Ï´Ù.
byte[] receiveBuff = new byte[2048];


byte[] receiveResult = imscall.IMSSendReceive(sendBuff,sendBuff.length,receiveBuff,30000);


À§ ¼Ò½º¿¡¼­ byte[]ÀÇ receiveBuff¸¦ IMSSendReceiveÀÇ ¸Å°Üº¯¼ö·Î ³Ñ°ÜÁÝ´Ï´Ù.


IMSCall.cpp


byte[]À» returnÇÏ·Á°í jbyteArray·Î Àâ¾Ò½À´Ï´Ù.


JNIEXPORT jbyteArray JNICALL Java_IMSCall_IMSSendReceive(JNIEnv *env, jobject obj, jbyteArray sendData, jint sendLength,jbyteArray receiveBuff,jint timeout)
{
MAX_PACKET = 2048·Î ¼±¾ðÇØ µÎ¾ú½À´Ï´Ù.

char sendBuff[MAX_PACKET], recvBuff[MAX_PACKET];
memset(sendBuff, 0x00, sizeof(sendBuff));
memset(recvBuff, 0x00, sizeof(recvBuff));
memcpy(sendBuff, cstr, sendLength);
//SendÂÊÀº Àß µÇ°í Àְŵç¿ä.. java¼Ò½º¿¡¼­ data¸¦ ³Ñ±â¸é ±× 󸮰á°ú¸¦ recvBuff°¡ ´ã°í ÀÖ½À´Ï´Ù.


memcpy(receiveBuff,recvBuff,length);
//IMSSendReceive¶ó´Â ÇÔ¼ö¸¦ ºÎ¸£¸é receive DataÀÇ length°¡ return µË´Ï´Ù.
±×·¡¼­ recvBuffÀÇ ³»¿ëÀÇ recvBuffÀÇ length¸¸Å­ receiveBuff¿¡ copyÇÕ´Ï´Ù.


return receiveBuff;
// ±×·¡¼­ receive¹ÞÀº dataÀÇ byte[]À» µ¹·Á ÁÝ´Ï´Ù.
±×·³ javaÂÊ¿¡¼­ Àß ¹Þ¾Æ¾ß Çϴµ¥ Àß ¹ÞÁú ¸øÇÕ´Ï´Ù.


Áö±Ý Å×½ºÇغ»°Ç javaÂÊ¿¡¼­ ³Ñ±â´Â receiveBuff¿¡ receive ¹ÞÀº data¸¦ ³Ñ°ÜÁÖ°í ±× receiveBuff¸¦ ÀÚ¹ÙÂÊ¿¡¼­ »ç¿ëÇϴ°̴ϴÙ.
java¼Ò½º¿¡¼­ receiveBuff¸¦ ¼±¾ðÇØÁÖ°í ÀÌ receiveBuff¸¦ ÇÔ¼öÀÇ ¸Å°Ôº¯¼ö·Î ³Ñ°ÜÁÖ°í ±× ÇÔ¼öºÎºÐ¿¡¼­ receiveBuff¿¡ data¸¦ Àû¾îÁشٸé ÀÚ¹Ù¿¡¼­ receiveBuff¸¦ ´Ù½Ã »ç¿ëÇÏ°Ô µÈ´Ù¸é receiveBuff¿£ »õ·Î¿î ³»¿ëÀÌ µé¾îÀÖ¾î¾ß ÇÏÁö ¾Ê³ª¿ä..
÷¿£ ±×·¸°Ô »ý°¢ÇÏ°í return°ª¾øÀÌ voidÇüÀ¸·Î ÇÔ¼ö¸¦ ¼±¾ðÇÏ°í receiveBuff¿¡ µ¥ÀÌŸ¸¦ ³Ö¾îÁÖ¾î º¸¾Ò´Âµ¥ ¾ÈµÇ´õ¶ó±¸¿ä..


À§ ¼Ò½ºÃ³·³ IMSSendReceive()ÀÇ return°ªÀ» byte[]·Î Çؼ­ byte[]¸¦ ³Ñ°ÜÁÖ´Â ¹æ¹ýµµ ½ÃµµÇغ¸¾ÒÀ¸³ª.. ÀÌ·¸°ÔÇÏ¸é °ªÀÌ Àß ³Ñ¾î°¡±â¿¡ ¾Õ¼­¼­ ÇÁ·Î±×·¥ÀÌ Á×¾î¹ö¸³´Ï´Ù. ¿¢¼¼½º °øÀ¯ À§¹Ý .. ¾Æ¸¶ ÀÌ·± ÀÌÀ¯¶§¹®ÀÎ°Í °°½À´Ï´Ù.


¾î¶»°Ô ÇؾßÇÒÁö ¸ð¸£°Ú½À´Ï´Ù..


.cppÈ­ÀÏ¿¡¼­ jstring°ªÀº Àß ³Ñ¾î°¬½À´Ï´Ù..
byte[]°ªÀ» ³Ñ°ÜÁÖ·Á´Ï±î Àß ³Ñ¾î°¡Áö ¾Ê½À´Ï´Ù..


¾î¶»°Ô ¹æ¹ýÀÌ ÀÖ°Ú½À´Ï±î?
Âü°íÇϴ å¿¡ µµ¿òÀ» ¸¹ÀÌ ¹Þ°í Àִµ¥ À̺κÐÀÌ ºüÁ® ÀÖ½À´Ï´Ù..


°í¼öºÐµéÀÇ µµ¿òÀ» ºÎŹÇÕ´Ï´Ù..


¼Ò½º°¡ ³Ê¹« ÀϺκÐÀûÀ̾ ÀÌÇØÇϱâ Èûµå½Ç ¼öµµ Àִµ¥ ±×·¸´Ù¸é ´Ù½Ã ¿¬¶ô À» ÁÖ½Ã¸é ¼Ò½º¸¦ ÀüºÎ ¿Ã·Áº¸µµ·Ï ÇÏ°Ú½À´Ï´Ù.
µµ¿òÀ» ¹ÞÀ» ¼ö ÀÖ¾úÀ¸¸é ÁÁ°Ú½À´Ï´Ù..


²À ºÎŹµå¸³´Ï´Ù.


¾î·ÆÁø ¾ÊÀº°Í °°Àºµ¥ cÀÇ byte[]¿Í JNI Type jbyteArray¿Í ÀÚ¹ÙÀÇ byte[]ÀÇ Type º¯È¯¿¡¼­ ¿À´Â ¹®Á¦ÀÎ°Í °°Àºµ¥..


³Ê¹« ±æ¾îÁ³³ª¿ä..
º¸½Ã°í Àß ÀÌÇØ°¡ ¾ÈµÇ½Ã¸é ´Ù½Ã ¿¬¶ô ÁÖ½Ã°í ²À µµ¿Í ÁÖ¼¼¿ä..


±×·³ À̸¸..


Áñ°Å¿î ÀÏÁÖÀÏÀÌ µÇ¼¼¿ä..


´ÙÀ½ ±Ûµé:



À̾ ±Û¿Ã¸®±â(´äÇϱâ)

À̸§:
E-Mail:
Á¦¸ñ:
³»¿ë:
HTML ÅÂ±× Æ÷ÇÔ ¿©ºÎ: HTML ¹®¼­ÀÏ °æ¿ì üũ
°ü·Ã URL(¼±ÅÃ):
URL Á¦¸ñ(¼±ÅÃ):
°ü·Ã À̹ÌÁö URL:


[ ´ÙÀ½ ±Ûµé ] [ À̾ ±Û¿Ã¸®±â(´äÇϱâ) ] [ ÀÚ¹Ù ¹¯°í ´äÇϱâ ]