package main
import (
"fmt"
"net"
"net/rpc"
"net/rpc/jsonrpc"
)
// 结构体
type Info struct{}
// 结构体方法
func (this Info) Liu(name string, resp *string) error {
*resp = name + " 刘洋"
return nil
}
// 结构体方法
func (this Info) Yang(name string, resp *string) error {
*resp = name + " 刘洋1213"
return nil
}
// 接口 + 函数 实现了 rpc的调用必须 和 接口定义的函数一样的传参
// 定义接口
type Minst interface {
Liu(string, *string) error
Yang(string, *string) error
}
// 函数
func initADD(i Minst) {
rpc.RegisterName("hell", i)
}
func main() {
// 远程调用函数
//rpc.RegisterName("hell", new(Info))
initADD(new(Info))
// 建立链接
fmt.Println("建立链接")
l, err := net.Listen("tcp", ":8000")
if err != nil {
fmt.Println("err or", err)
return
}
defer l.Close()
fmt.Println("开始监听")
conn, err := l.Accept()
if err != nil {
fmt.Println("error or", err)
return
}
defer conn.Close()
//rpc.ServeConn(conn)
jsonrpc.ServeConn(conn)
}
发表评论