概述
文章目录
- 前言
- 服务端协议替换
- 客户端协议替换
前言
接下将rpc自带的Gob编码协议替换为json编码协议
服务端协议替换
1.rpc.ServeCodec 支持指定编码协议
2.jsonrpc.NewServerCodec 使用json编码协议
package main
import (
"net"
"net/rpc"
"net/rpc/jsonrpc"
)
type Hello struct {
}
func (h *Hello) Talk(request string, response *string) error {
*response = "hello_" + request
return nil
}
func main() {
listen, _ := net.Listen("tcp", ":8083")
rpc.RegisterName("hello", &Hello{})
for {
accept, _ := listen.Accept()
go func() {
//rpc.ServeConn(accept)
/**
1.rpc.ServeCodec 支持指定编码协议
2.jsonrpc.NewServerCodec 使用json编码协议
*/
rpc.ServeCodec(jsonrpc.NewServerCodec(accept))
}()
}
}
客户端协议替换
1.没有使用rpc.Dial 是因为其得到的客户端是基于Gob编码的
2.rpc.NewClientWithCodec 创建指定编码协议的客户端
3.jsonrpc.NewClientCodec 设置json编码协议
package main
import (
"fmt"
"net"
"net/rpc"
"net/rpc/jsonrpc"
)
func main() {
// 没有使用rpc.Dial 是因为其得到的客户端是基于Gob编码的
dial, _ := net.Dial("tcp", ":8083")
/**
rpc.NewClientWithCodec 创建指定编码协议的客户端
jsonrpc.NewClientCodec 设置json编码协议
*/
client := rpc.NewClientWithCodec(jsonrpc.NewClientCodec(dial))
var res *string
client.Call("hello.Talk", "xie", &res)
fmt.Println(*res) //hello_xie
}
最后
以上就是繁荣钢笔为你收集整理的Golang rpc编码协议替换的全部内容,希望文章能够帮你解决Golang rpc编码协议替换所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复