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)
}
posted @   5656923  阅读(48)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示