server 端
package main
import (
"fmt"
"log"
"net"
"net/rpc"
)
type HelloRpc struct {
}
func (h *HelloRpc) Hello(name string,resp *string) error {
*resp = name + " 你好"
return nil
}
func NewHelloRpc()*HelloRpc {
return &HelloRpc{}
}
func main() {
var err error
//注册rpc服务,绑定对象
if err = rpc.RegisterName("rpc.zozoo.net",NewHelloRpc()); err != nil {
log.Fatal(err)
}
fmt.Println("开始监听...")
//设置监听
listen,err := net.Listen("tcp","127.0.0.1:8080")
if err != nil {
log.Fatal(err)
}
defer listen.Close()
//建立连接
conn,err := listen.Accept()
if err != nil {
log.Fatal(err)
}
defer conn.Close()
fmt.Println("连接成功...")
//绑定服务
rpc.ServeConn(conn)
}
client 端
package main
import (
"fmt"
"log"
"net/rpc"
)
func main() {
var (
client *rpc.Client
err error
reply string
)
//使用rpc连接服务器
client,err = rpc.Dial("tcp","127.0.0.1:8080")
if err !=nil {
log.Fatal(err)
}
defer client.Close()
//调用远程函数
err = client.Call("rpc.zozoo.net.Hello","gangan",&reply)
if err != nil{
log.Fatal(err)
}
fmt.Println(reply)
}