服务端代码
package main
import (
"log"
"net"
"net/rpc"
)
type HelloService struct { //空结构体
}
func (p *HelloService) Hello(request string, reply *string) error { //为hello结构体绑定hello方法
*reply = "你好:" + request //拼接字符串
return nil //返回空值
}
func main() {
rpc.RegisterName("HelloService", new(HelloService))
listener, err := net.Listen("tcp", "localhost:1234")
if err != nil {
log.Fatal("ListenTCP erro :", err)
}
conn, err := listener.Accept()
if err != nil {
log.Fatal("Accept error:", err)
}
rpc.ServeConn(conn)
}
客户端代码
package main
import (
"fmt"
"log"
"net/rpc"
)
func main() {
client, err := rpc.Dial("tcp", "localhost:1234")
if err != nil {
log.Fatal("dialing : ", err)
}
var reply string
err = client.Call("HelloService.Hello", "hello", &reply)
if err != nil {
log.Fatal(err)
}
fmt.Println(reply)
}
返回结果
你好:hello
本文介绍了一个使用 Go 语言实现的简单 RPC (远程过程调用) 示例。服务端定义了一个名为 HelloService 的服务,该服务有一个名为 Hello 的方法,用于接收客户端发送的消息并返回带有“你好:”前缀的响应。客户端通过 TCP 连接到服务端,并调用 Hello 方法。最终,客户端成功打印出了服务端返回的带有问候语的结果。
1333

被折叠的 条评论
为什么被折叠?



