针对Go语言和C的Protobuf-RPC实现. 其中C版本还附加了XML的支持.
示例代码:
package server import ( "code.google.com/p/goprotobuf/proto" "errors" "./arith.pb" ) type Arith int func (t *Arith) Multiply(args *arith.ArithRequest, reply *arith.ArithResponse) error { reply.Val = proto.Int32(args.GetA() * args.GetB()) return nil } func (t *Arith) Divide(args *arith.ArithRequest, reply *arith.ArithResponse) error { if args.GetB() == 0 { return errors.New("divide by zero") } reply.Quo = proto.Int32(args.GetA() / args.GetB()) reply.Rem = proto.Int32(args.GetA() % args.GetB()) return nil } func main() { arith.ListenAndServeArithService("tcp", ":1984", new(Arith)) }