golang与java间的json-rpc跨语言调用
2017-02-08 09:08
477 查看
1、java通过jni调用dll库实现与后台C(C++)通信的代码实现还是有些麻烦。
2、Golang的出现,使得一些对C代码不是很熟的程序员看见的希望,虽然说当前对于Golang就还有很多质疑的声音,
但是个人认为对于一般下后台业务,Golang是完全可以胜任的。
3、还有一个好处就是java对Golang后台业务的调用时很方便,下面以一个例子进行说明。
4、Golang服务端代码如下(rpcserver.go):
5、java实现的客户端代码如下
6、编译Golang服务器代码并启动服务端
1)go build rpcserver.go
2) ./rpcserver
7、运行java客户端程序,执行结果如下:
reply: 2002
实验需要的jar请访问链接:http://download.csdn.net/detail/xuguokun1986/9749486
2、Golang的出现,使得一些对C代码不是很熟的程序员看见的希望,虽然说当前对于Golang就还有很多质疑的声音,
但是个人认为对于一般下后台业务,Golang是完全可以胜任的。
3、还有一个好处就是java对Golang后台业务的调用时很方便,下面以一个例子进行说明。
4、Golang服务端代码如下(rpcserver.go):
package main // first we create a simple golang rpc server based on socket import ( "fmt" "net" "net/rpc" "net/rpc/jsonrpc" ) type Counter struct { Sum int } func (this *Counter) Add(i int, r *int) error { this.Sum += i *r = this.Sum fmt.Printf("i: %v", i) return nil } func main() { rpc.Register(new(Counter)) l, err := net.Listen("tcp", ":3333") if err != nil { fmt.Printf("Listener tcp err: %s", err) return } for { fmt.Println("wating...") conn, err := l.Accept() if err != nil { fmt.Sprintf("accept connection err: %s\n", conn) } go jsonrpc.ServeConn(conn) } }
5、java实现的客户端代码如下
package com.test; import com.googlecode.jsonrpc4j.JsonRpcClient; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.*; public class helloworld { public static void main(String[] args) { try { Socket socket = new Socket("192.168.110.157", 3333); JsonRpcClient client = new JsonRpcClient(); InputStream ips = socket.getInputStream(); OutputStream ops = socket.getOutputStream(); int reply = client.invokeAndReadResponse("Counter.Add", new Object[]{1001}, int.class, ops, ips); System.out.println("reply: " + reply); } catch (IOException e) { e.printStackTrace(); } catch (Throwable throwable) { throwable.printStackTrace(); } } }
6、编译Golang服务器代码并启动服务端
1)go build rpcserver.go
2) ./rpcserver
root@docker1:/home/docker/xu/go-pro/java-go# ./rpcserver wating... wating... wating... i: 1001wating... i: 1001
7、运行java客户端程序,执行结果如下:
reply: 2002
实验需要的jar请访问链接:http://download.csdn.net/detail/xuguokun1986/9749486
相关文章推荐
- 使用json-rpc实现delphi+java异构语言RPC调用
- 使用Thrift0.9.1实现跨语言调用Golang、Php、Python、Java
- JSON-RPC-Java学习之类型映射及js客户端调用
- 多语言调用之 C++ 调用 Java JNI
- JAVA通过JNI调用本地C语言方法
- JAVA通过JNI调用本地C语言方法
- JAVA通过JNI调用本地C语言方法
- JSON-RPC-Java 学习之体系结构介绍
- 基于Java的Ajax框架之JSON-RPC(五)
- 基于Ajax和JSON从javascript中调用后台java方法的JsonGateway
- JAVA通过JNI调用本地C语言方法
- 基于Java的Ajax框架之JSON-RPC(一)
- JAVA通过JNI调用本地C语言方法
- 基于Java的Ajax框架之JSON-RPC(二)
- 基于Java的Ajax框架之JSON-RPC(三)
- AJAX框架JSON-RPC-Java 1.0rc2 发布
- JSON-RPC-Java学习之JSON-RPC specifications
- JSON-RPC-Java (一)
- JSON-RPC-Java 指南
- 使用JSON-RPC-Java完成Ajax交互