关于如何使用golang进行json-rpc的调用,网上虽然有很多的帖子,但都仅仅是golang程序间通信,没有牵涉到跨语言调用的问题。在使用golang开发服务端程序的时候,不可避免的要与其他语言的程序进行交互,特别是json-rpc这的协议,本身就应该是用在不同的平台间的调用上的(因为golang程序间的交流已经有了封闭的用gob编码解码的rpc包了,我们自然而言的会想到用json-rpc来提供对其他语言的支持)。本文就来详细探究一下如何实现golang与java之间的json-rpc调用。转载请注明出处:http://www.cnblogs.com/geomantic/p/4751859.html
首先,实现一个基于socket的java调用golang的样例(这个方法不需要第三方golang库,因为golang本身就有jsonrpc的支持库,但是仅能通过tcp协议通信,并且有一些格式上的局限,直接与其他的语言交互会有些障碍。如果要通过http协议通信的话,必须自己写一个或者用第三方的库,后面会有介绍)
package rpcz//first we create a simple golang rpc server based on socket
import ("fmt"
"net"
"net/rpc"
"net/rpc/jsonrpc")
type Counterstruct{
Sumint}
func (this *Counter) Add(i int, r *int) error {this.Sum +=i*r = this.Sum
fmt.Printf("i: %v", i)ret