go rpc的入门与使用
服务端 创建server.go文件。详见demo82
package main
import (
"fmt"
"net"
"net/rpc"
)
//定义类对象
type World struct {
}
//绑定类方法
func (this *World) HelloWorld(name string, resp *string) error {
*resp = name + " 你好!"
return nil
}
func main() {
//1.注册rpc服务,绑定对象方法
err := rpc.RegisterName("hello", new(World))
if err != nil {
fmt.Println("注册rpc服务失败!", err)
return
}
//2.设置监听
listener, err := net.Listen("tcp", "127.0.0.1:8800")
if err != nil {
fmt.Println("net.listen err:", err)
return
}
defer listener.Close()
fmt.Println("开始监听...")
//3.建立链接
conn, err := listener.Accept()
if err != nil {
fmt.Println("listener.Accept err:", err)
return
}
defer conn.Close()
fmt.Println("链接成功 ...")
//4.绑定服务
rpc.ServeConn(conn)
}
客户端 创建client.go文件
package main
import (
"fmt"
"net/rpc"
)
func main() {
// 1.用rpc链接服务器
conn, err := rpc.Dial("tcp", "127.0.0.1:8800")
if err != nil {
fmt.Println("Dial err:", err)
return
}
defer conn.Close()
// 2.调用远程函数
var reply string //接受返回值 --传出参数
err = conn.Call("hello.HelloWorld", "张三", &reply)
if err != nil {
fmt.Println("Call err:", err)
return
}
fmt.Println(reply)
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)