RPC 是什么

RPC(Remote Procedure Call) 是一个计算机通信协议。该协议允许运行与一台计算机的程序调用另一个地址空间的程序,是一个通过发送请求-接受回应进行信息交互的系统。

RPC 的规则

RPC 方法需要为公有,同时有两个可序列化参数,第二个为引用类型(response 调用方接受服务方修改的值)函数返回类型为error。

eg: func Method(request string,response *string)error{

}

Echo demo

server

package main

import (
"fmt"
"net"
"net/rpc"
) type EchoService struct {
} func (p *EchoService) Echo(message string, reply *string) error {
fmt.Println("client say:", message)
*reply = "echo server say :" + message
return nil
} func main() {
fmt.Println("waitting or client..")
rpc.RegisterName("EchoService", new(EchoService))
listener, err := net.Listen("tcp", ":8888")
if err != nil {
panic(err)
}
conn, err := listener.Accept()
if err != nil {
panic(err)
}
rpc.ServeConn(conn)
}

client

package main

import (
"fmt"
"net/rpc"
) func main() {
client, err := rpc.Dial("tcp", "localhost:8888")
if err != nil {
panic(err)
} var reply string
err = client.Call("EchoService.Echo", "Hello world", &reply)
if err != nil {
panic(err)
}
client.Close()
fmt.Println(reply)
}

结果:

~/.../rpc/server >>> go run ./echo.go
waitting or client..
client say: Hello world ~/.../rpc/client >>> go run ./client.go
echo server say :Hello world

最新文章

  1. Hadoop1 Centos伪分布式部署
  2. Coursera Machine Learning : Regression 评估性能
  3. C# 调用restful服务开源库
  4. mysql force index() 强制索引的使用
  5. 李洪强iOS开发之OC[009] -OC无参方法的声明实现和调用
  6. storyboard 总结
  7. JVM Run-Time Data Areas.
  8. NYOJ 110 剑客决斗
  9. error Infos
  10. maven 工作原理和添加jar包技巧
  11. 在ASP.NET项目中使用CKEditor
  12. 再起航,我的学习笔记之JavaScript设计模式08(建造者模式)
  13. jquery layer弹窗弹层插件 (转)
  14. Epson L4158打印机安装与配置
  15. javascript控制滚动条的位置,获取控件的位置
  16. Python面向对象(多态)
  17. centos 6.8安装java环境
  18. Datatables跳转到指定页
  19. Java [Leetcode 387]First Unique Character in a String
  20. Spring.NET学习笔记1——控制反转(基础篇)

热门文章

  1. python之线程池和进程池
  2. Docker学习:(一)初识Docker
  3. 实验 4:Open vSwitch 实验——Mininet 中使用 OVS 命令
  4. 多测师讲解html _段落标签002_高级讲师肖sir
  5. MeteoInfoLab脚本示例:计算涡度、散度
  6. MeteoInfoLab脚本示例:FY-3A AOD HDF数据
  7. day03 Pyhton学习
  8. CentOS 7操作系统目录结构介绍
  9. go 解析path
  10. centos8上redis5在生产环境的配置