⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jni_sms.cpp

📁 用JNI封装的一个联通短信SGIP协议 API的java接口
💻 CPP
字号:
/*
  JNI 封装联通SMS短信API的java接口,只封装了个别函数供测试用
  by Paladin, netcom@163.net, http://www.programsalon.com
*/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <memory.h>

#include "jni_0005fsms.h"
#include "VASPClient.h"

//************************************************************

#define JGETSTRING(env, str)	(char *)env->GetStringUTFChars(str, 0)
#define JGETBYTEARRAY(env, b)	(unsigned char *)env->GetByteArrayElements(b, 0)
#define JGETINTARRAY(env, ia)	(int *)env->GetIntArrayElements(ia, 0)
#define JRELEASESTRING(env, str, p)	env->ReleaseStringUTFChars(str, p)
#define JRELEASEBYTEARRAY(env, b, p) env->ReleaseByteArrayElements(b, (signed char *)p, 0)
#define JRELEASEINTARRAY(env, ia, p) env->ReleaseIntArrayElements(ia, (long *)p, 0)

////////////////////////////////////////////////////////////////////////////////
// Java_<class name>_<function_name>, if name have "_", use "_1" instead of "_"
JNIEXPORT jint JNICALL Java_jni_1sms_vasp_1Initialize
  (JNIEnv *env, jobject obj, jstring Server_IP, jint Port, jstring ICP_id)
{
	char *c_server_ip =JGETSTRING(env, Server_IP);
	int c_port =Port;
	char *c_icp_id =JGETSTRING(env, ICP_id);
printf("vasp_Initialize:: ip=%s, port=%d, icp=%s", c_server_ip, c_port, c_icp_id);

	int rtn =  vasp_Initialize(c_server_ip, c_port, c_icp_id);
	
	JRELEASESTRING(env, Server_IP, c_server_ip);
	JRELEASESTRING(env, ICP_id, c_server_ip);

	return rtn;
}
///////////////////////////////////////////////////////////////////////////////////////////

JNIEXPORT jint JNICALL Java_jni_1sms_SendSubmit (
				JNIEnv *env, jobject obj, 
			    jintArray SequenceNumber,
				jstring SPNumber,
                jstring chargenumber,
                jint usercount,
                jstring usernumber,
                jstring msg_src,
                jstring service_id,
                jstring feetype,
                jstring feecode,
                jstring givenvalue,
                jint agentflag,
                jint morelatetomtflag,
                jint msg_level,
                jstring valid_time,
                jstring at_time,
                jint reportflag,
				jint TP_pid,
				jint TP_udhi,
                jint msg_fmt,
                jint msg_type,
                jint  msg_length,
                jstring msg_content)
{
	unsigned int  *c_SequenceNumber =(unsigned int *)JGETINTARRAY(env, SequenceNumber);
	char *c_SPNumber =JGETSTRING(env, SPNumber);
    char *c_chargenumber =JGETSTRING(env, chargenumber);
    unsigned char c_usercount =(unsigned char)usercount;
	char *cc_usernumber =JGETSTRING(env, usernumber);
	
	char *c_usernumber[10];
    
	for(int i =0; i<c_usercount; i++)
		c_usernumber[i] =cc_usernumber+10;  // 此处不一定对,需要自己修改
    char *c_msg_src =JGETSTRING(env, msg_src);
    char *c_service_id =JGETSTRING(env, service_id);
    char *c_feetype =JGETSTRING(env, feetype);
    char *c_feecode =JGETSTRING(env, feecode);
    char *c_givenvalue =JGETSTRING(env, givenvalue);
    unsigned char c_agentflag =(unsigned char)agentflag;
    unsigned char c_morelatetomtflag =(unsigned char)morelatetomtflag;
    unsigned char c_msg_level =(unsigned char)msg_level;
    char *c_valid_time =JGETSTRING(env, valid_time);
    char *c_at_time =JGETSTRING(env, at_time);
    unsigned char c_reportflag =(unsigned char)reportflag;
	unsigned char c_TP_pid =(unsigned char)TP_pid;
	unsigned char c_TP_udhi =(unsigned char)TP_udhi;
    unsigned char c_msg_fmt =(unsigned char)msg_fmt;
    unsigned char c_msg_type=(unsigned char)msg_type;
    unsigned int  c_msg_length =(unsigned int)msg_length;
    char *c_msg_content =JGETSTRING(env, msg_content);

	int rtn =SendSubmit(
			    c_SequenceNumber,
				c_SPNumber,
                c_chargenumber,
                c_usercount,
                c_usernumber,
                c_msg_src,
                c_service_id,
                c_feetype,
                c_feecode,
                c_givenvalue,
                c_agentflag,
                c_morelatetomtflag,
                c_msg_level,
                c_valid_time,
                c_at_time,
                c_reportflag,
				c_TP_pid,
				c_TP_udhi,
                c_msg_fmt,
                c_msg_type,
                c_msg_length,
                c_msg_content
		);
	
	JRELEASEINTARRAY(env, SequenceNumber, c_SequenceNumber);
	JRELEASESTRING(env, SPNumber, c_SPNumber);
    JRELEASESTRING(env, chargenumber, c_chargenumber);
	JRELEASESTRING(env, usernumber,cc_usernumber);
    JRELEASESTRING(env, msg_src, c_msg_src);
    JRELEASESTRING(env, service_id, c_service_id);
    JRELEASESTRING(env, feetype, c_feetype);
    JRELEASESTRING(env, feecode, c_feecode);
    JRELEASESTRING(env, givenvalue, c_givenvalue);
    JRELEASESTRING(env, valid_time, c_valid_time);
    JRELEASESTRING(env, at_time, c_at_time);
    JRELEASESTRING(env, msg_content, c_msg_content);

	return rtn;
}

JNIEXPORT jint JNICALL Java_jni_1sms_Test(JNIEnv *env, jobject obj, jint i)
{
	int c_i =i;
	printf("jni_sms:Test(), i=%d", c_i);

	return i;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -