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