농 행 심증 통 자바 개발 인터페이스 연결 코드(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    ,    :

                이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JAVA 객체 작성 및 제거 방법정적 공장 방법 정적 공장 방법의 장점 를 반환할 수 있습니다. 정적 공장 방법의 단점 류 공유되거나 보호된 구조기를 포함하지 않으면 이불류화할 수 없음 여러 개의 구조기 파라미터를 만났을 때 구축기를 고려해야 한다...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.