Java与C交互

/**
 * Java与C交互
 * @param param 上送信息
 * @return 返回信息
 */
public static Map<String, String> infExchange(Object param){
	Map<String, String> returnMsg = null;

	Socket socket = null;
	DataOutputStream outputStream = null;
	DataInputStream inputStream = null;

	String host = null;
	int port = 0;
	try{
		//读取地址及端口号
		host = Global.getConfig("socket.host");
		port = Integer.valueOf(Global.getConfig("socket.port"));

		//创建socket
		socket = new Socket(host, port);
		socket.setSoTimeout(20000);//超时时间设置为20s

		//对象转化为json
		ObjectMapper mapper = new ObjectMapper();
		String json = mapper.writeValueAsString(param);

		//前加4位长度
		String sendMsg = StringUtils.padLeft(String.valueOf(json.getBytes("GBK").length), ‘0‘, 4) + json;
		System.out.println("上送报文:" + sendMsg);

		//上送
		outputStream = new DataOutputStream(socket.getOutputStream());
		outputStream.write(sendMsg.getBytes("GBK"));
		outputStream.flush();

		//接收返回
		inputStream = new DataInputStream(socket.getInputStream());
		byte[] b = new byte[4];
		int count = 1;//只读取两次,第一次读取报文长度,第二次读取完整报文
		while(inputStream.read(b)!=-1){
			if(count==1){
				int len = Integer.valueOf(new String(b));
				b = new byte[len];
				count++;
				Thread.sleep(200);
			}else{
				break;
			}
		}
		String response = new String(b, "GBK");
		System.out.println("返回报文:" + response);

		//将返回json转化为map格式
		if(response!=null && !"".equals(response)){
			returnMsg = mapper.readValue(response, Map.class);
		}
	}catch(Exception e){
		e.printStackTrace();
	}finally{
		//关闭流
		try {
			inputStream.close();
			outputStream.close();
			socket.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	return returnMsg;
}
时间: 2024-11-14 18:06:55

Java与C交互的相关文章

Java与WCF交互(一):Java客户端调用WCF服务

最近开始了解WCF,写了个最简单的Helloworld,想通过java客户端实现通信.没想到以我的基础,居然花了整整两天(当然是工作以外的时间,呵呵),整个过程大费周折,特写下此文,以供有需要的朋友参考: 第一步:生成WCF服务 新建WCF解决方案,分别添加三个项目,HelloTimeService(类库),HelloTimehost(控制台程序),HelloTimeClient(控制台程序),项目结构如图:各个项目的主要代码:service: Host: Client: 编译通过后,测试Hos

转载——Java与WCF交互(一)补充:用WSImport生成WSDL的Java客户端代码

在<Java与WCF交互(一):Java客户端调用WCF服务>一文中,我描述了用axis2的一个Eclipse控件生成WCF的Java客户端代理类,后来有朋友建议用Xfire.CXF,一直没有尝试,今天有朋友指出JDK6可以用java自带的一个WSImport工具,试了下,果然很爽,这是一个exe文件,位于%JAVA_HOME%\bin下,它的官方使用说明,见:http://download-llnw.oracle.com/javase/6/docs/technotes/tools/share

Android中Java和JavaScript交互

Android提供了一个很强大的WebView控件用来处理Web网页,而在网页中,JavaScript又是一个很举足轻重的脚本.本文将介绍如何实现Java代码和Javascript代码的相互调用. 如何实现 实现Java和js交互十分便捷.通常只需要以下几步. WebView开启JavaScript脚本执行 WebView设置供JavaScript调用的交互接口. 客户端和网页端编写调用对方的代码. 本例代码 为了便于讲解,先贴出全部代码 Java代码 package com.example.j

转载——Java与WCF交互(二):WCF客户端调用Java Web Service

在上篇< Java与WCF交互(一):Java客户端调用WCF服务>中,我介绍了自己如何使用axis2生成java客户端的悲惨经历.有同学问起使用什么协议,经初步验证,发现只有wsHttpBinding可行,而NetTcpBinding不可行,具体原因待查.昨晚回去重新测试WCF客户端调用Java Web Service,并将过程公布如下: 其实本不需要做web service,只是原来公开的经典的Web service像(http://soapinterop.java.sun.com/rou

转载——Java与WCF交互(一):Java客户端调用WCF服务

最近开始了解WCF,写了个最简单的Helloworld,想通过java客户端实现通信.没想到以我的基础,居然花了整整两天(当然是工作以外的时间,呵呵),整个过程大费周折,特写下此文,以供有需要的朋友参考: 第一步:生成WCF服务 新建WCF解决方案,分别添加三个项目,HelloTimeService(类库),HelloTimehost(控制台程序),HelloTimeClient(控制台程序),项目结构如图:各个项目的主要代码:service: Host: Client: 编译通过后,测试Hos

Android WebView加载本地html并实现Java与JS交互

最近做的一个项目中,用到自定义地图,将自定义地图转换成html页面,现在需要做的是如何将本地的html加载到android中,并可以实现交互. 相关讲解: 其实webview加载资源的速度并不慢,但是如果资源多了,当然就很慢.图片.css .js .html这些资源每个大概需要10-200ms ,一般都是30ms就ok了.不过webview是必须等到全部资源都完成加载,才会进行渲染的,所以加载的速度很重要!从Google上我们了解到,webview加载页面的顺序是:先加载html,然后从里面解析

Java采用JNI调用VC++生成的dll(Java与C++交互)

应项目需求,需要android调用java,java再调用C++实现android一个图片匹配的功能,我们作为java组需要和C++和Android进行交互.下面是java和C++采用JNI的方式进行接口传参交互,我做的一个demo并运行成功. 什么是JNI? JNI全拼是Java Native Interface,中文意思为Java本地调用.JNI标准是Java平台的一部分,它允许java和其他语言的代码进行交互.JNI开始是为了本地已经编译好的语言,尤其是C和C++而设计的,我们也可以使用J

用ScriptEngine在java中和javascript交互的例子(JDK6新特性)

1. [代码][Java]代码     package demo7; import java.util.Arrays;import java.util.List; import javax.script.Invocable;import javax.script.ScriptEngine;import javax.script.ScriptEngineManager; public class ScriptEngineTest {     public static void main(Stri

android 中java和javascript交互

android的WebView是一个非常强大的控件,本文主要针对其简单使用和笔者在使用时所遇到的问题做一些总结. 本文参考了该博文:http://blog.csdn.net/zgjxwl/article/details/9627685 一.WebView中Java与javascript交互 1.这是要和js交互的注入接口类: public final class JavascriptInteerface{ @JavascriptInterface public void test(String