±Û¾´ÀÌ :ºñ¾È 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 º¯È¯¿¡¼ ¿À´Â ¹®Á¦ÀÎ°Í °°Àºµ¥..
³Ê¹« ±æ¾îÁ³³ª¿ä..
º¸½Ã°í Àß ÀÌÇØ°¡ ¾ÈµÇ½Ã¸é ´Ù½Ã ¿¬¶ô ÁÖ½Ã°í ²À µµ¿Í ÁÖ¼¼¿ä..
±×·³ À̸¸..
Áñ°Å¿î ÀÏÁÖÀÏÀÌ µÇ¼¼¿ä..