golang rpc包使用介绍

本文介绍了Golang的RPC包使用,包括服务端和客户端的处理过程。服务端需注册对象并监听网络地址,客户端则通过连接调用服务。文章提供完整示例,展示如何建立连接、调用服务及处理请求。
摘要由CSDN通过智能技术生成

rpc包提供通过网络或其他I/0连接的对象的导出方法的访问。服务器注册一个对象,使其作为具有对象类型名称的可见服务。注册后,可以远程访问对象的导出方法。服务器可以注册不同类型的多个对象服务,但是注册相同类型的多个对象是错误的。而且对象上的方法只有满足下面的条件时,远程调用才能可用,否则方法会被忽略。

  • 方法的类型是可导出的
  • 方法是导出的
  • 方法有两个参数,都是可导出的
  • 第二个参数是指针类型
  • 方法返回一个error类型

方法看起来像下面结构:

func (t *T) MethodName(argType T1, replyType *T2) error

T1T2可以通过encoding/gob进行编码。方法的第一个参数代表调用者提供的参数,第二个参数代表返回给调用者的结果参数。方法返回的值如果不为空,那么返回reply参数将不会返回给客户端。

示例

服务端处理过程
  1. 首先使用Register或者RegisterName去注册一个rpc服务。
  2. 接着调用Listen方法直接监听本地网络上的地址,官方给的例子中在监听之前调用了rpc.HandleHTTP方法。
// rpc.HandleHTTP()

func HandleHTTP() {
    DefaultServer.HandleHTTP(DefaultRPCPath, DefaultDebugPath)
}

const (
    DefaultRPCPath  =   "/_goRPC_"
    DefaultDebug    =   "/debug/rpc"
)

func (server *Server) HandleHTTP(rpcPath, debugPath string) {
    http.Handle(rpcPath, server)
    http.Handle(debugPath, debugHTTP{server})
}

注册了两个handler,可以查看服务调用的情况。例如用Listen监听

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值