농 행 심증 통 자바 개발 인터페이스 연결 코드(jni 연결)
자바 호출 클래스 는 다음 과 같 습 니 다.관련 c 코드(dll 또는 so 파일 을 프로젝트 루트 디 렉 터 리 에 놓 음)와 함께 jar 패키지 로 포장 하여 디 결합 을 실현 할 수 있 습 니 다.
package com.sscc.fdep;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
/**
*
* @author huanghe
* jni c
*/
public class mrapi
{
static
{
//System.loadLibrary("mrapi");
try {
loadLib("mrapi");
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args)
{
}
/********************************* FDEP V3 **********************************/
/* ,
* return: 0-failed; 1-OK
App AppPwd c AppId AppPwd, C oConnInfo
*/
public native static int MrInit(String App,String AppPwd, String Ip,short Port,String Ipbak, short Portbak);
/* , SourceAppID App
* return: ""- pkgId-
psPkg , C pMsgPropery
*/
public native static String MrSend( byte[] psPkg, String SourceUserID,String SourceAppID, String DestUserID, String DestAppID,
String PkgID, String CorrPkgID, String UserData1, String UserData2, String ExpiredAbsTime, byte flag, byte Protocltype,int iMillSecTimeo);
//return "NULL"- pkID(64byte) + CorrpkID(64byte) + sourceUserID(64byte) + sourceAppID(64byte) +destUserID(64byte) + UserData1(256byte) + UserData2(256byte) + data 7 C pMsgPropery ,data
public native static byte[] MrReceive1(String sAppID,String SourceUserID,String SourceAppID, String DestUserID, String DestAppID,
String PkgID, String CorrPkgID, String UserData1, String UserData2, String ExpiredAbsTime, byte flag, byte Protocltype,int iMillSecTimeo);
/*
* return: 0-link_not_ok; 1-link_ok
mrinit app
*/
public native static int MrIsLinkOK(String sAppID);
/*
mrinit app*/
public native static void MrDestroy(String sAppID);
/********************************* FDEP V4 **********************************/
/* ,
* return: 0-failed; 1-OK
App AppPwd c AppId AppPwd, C oConnInfo
*/
public native static int Mr2Init(String App,String AppPwd, String Ip,short Port,String Ipbak, short Portbak);
/* , SourceAppID App
* return: ""- pkgId-
psPkg , C pMsgPropery
*/
public native static String Mr2Send( byte[] psPkg, String SourceUserID,String SourceAppID, String DestUserID, String DestAppID,
String PkgID, String CorrPkgID, String UserData1, String UserData2, String MsgType, byte flag, byte BizType, byte Priority, byte SensitiveLevel, int iMillSecTimeo);
//return "NULL"- pkID(64byte) + CorrpkID(64byte) + sourceUserID(64byte) + sourceAppID(64byte) +destUserID(64byte) + UserData1(256byte) + UserData2(256byte) + data 7 C pMsgPropery ,data
public native static byte[] Mr2Receive1(String sAppID,String SourceUserID,String SourceAppID, String DestUserID, String DestAppID,
String PkgID, String CorrPkgID, String UserData1, String UserData2, int iMillSecTimeo);
/*
* return: 0-link_not_ok; 1-link_ok
mrinit app
*/
public native static int Mr2IsLinkOK(String sAppID);
/*
mrinit app*/
public native static void Mr2Destroy(String sAppID);
/*
* return
*/
public native static byte[] Mr2GetVersion();
/* ID
* return PkgID
*/
public native static byte[] Mr2CreatePkgID(String szHandleAppID);
/*
/ return: -1: 0: 1:
*/
public native static int Mr2GetPeerUserStat(String szHandleAppID,String szPeerUserID);
/*
* return: 0: ,<0
*/
public native static int Mr2RegRecvCondition(String szHandleAppId,String szSrcUserId, String szSrcAppId, String szDestUserId, String szDestAppId,
String szPkgId, String szCorrPkgId, String szUserData1,String szUserData2) ;
/// "NULL,errmsg"- errcode(4byte)+pkID(64byte) + CorrpkID(64byte) + sourceUserID(32byte) + sourceAppID(32byte) +destUserID(32byte) + destAppID(32byte)+UserData1(256byte) + UserData2(256byte) + data 7 C pMsgPropery ,data
/// errcode= "0000" , errcode "0000" , , data ;
public native static byte[] Mr2Receive3(String sAppID,String SourceUserID,String SourceAppID, String DestUserID, String DestAppID,
String PkgID, String CorrPkgID, String UserData1, String UserData2, int iMillSecTimeo);
// dll so
private synchronized static void loadLib(String libName) throws IOException {
String systemType = System.getProperty("os.name");
String libExtension = (systemType.toLowerCase().indexOf("win")!=-1) ? ".dll" : ".so";
String libFullName = libName + libExtension;
String nativeTempDir = System.getProperty("java.io.tmpdir");
InputStream in = null;
BufferedInputStream reader = null;
FileOutputStream writer = null;
String[] fileType = new String[8];
String resource = "/win/";
if(systemType.toLowerCase().indexOf("win")!=-1){
fileType = new String[]{"mr2api.h","mrapi_log.conf","mrapi.dll","mrapi.h","mrapi.lib"};
}else{
fileType = new String[]{"mr2api.h","mrapi_log.conf","libmrapi.so","mrapi.h","libinfo.txt","history.txt"};
resource = "/hp/";
libFullName = "libmrapi"+libExtension;
}
File extractedLibFile = new File(nativeTempDir+File.separator+libFullName);
File file ;
// System.out.println(extractedLibFile.getPath());
if(!extractedLibFile.exists()){
try {
for(String fname:fileType){
in = mrapi.class.getResourceAsStream(resource + fname);
if(in!=null){
reader = new BufferedInputStream(in);
file = new File(nativeTempDir+File.separator+fname);
writer = new FileOutputStream(file);
byte[] buffer = new byte[1024];
while (reader.read(buffer) > 0){
writer.write(buffer);
buffer = new byte[1024];
}
if(in!=null)
in.close();
if(writer!=null)
writer.close();
}
}
} catch (IOException e){
e.printStackTrace();
} finally {
if(in!=null)
in.close();
if(writer!=null)
writer.close();
}
}
System.load(extractedLibFile.getPath());
}
}
————————————————
jar , maven , :
![ ](https://img-blog.csdnimg.cn/20200403165505977.png)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JAVA 객체 작성 및 제거 방법정적 공장 방법 정적 공장 방법의 장점 를 반환할 수 있습니다. 정적 공장 방법의 단점 류 공유되거나 보호된 구조기를 포함하지 않으면 이불류화할 수 없음 여러 개의 구조기 파라미터를 만났을 때 구축기를 고려해야 한다...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.