golang原生微服务

服务端

package main

import (
	"fmt"
	"net"
	"net/rpc"
	"net/rpc/jsonrpc"
)

type HelloWord struct {
}

func (this *HelloWord) SayHello(name string, revc *string) error {
	*revc = name + " 你好啊!"
	return nil
}

func main() {
	// 注册一个rpc服务
	err := rpc.RegisterName("Hello", &HelloWord{})
	if err != nil {
		fmt.Println("注册rpc失败",err)
		return
	}
	// 启动tcp监听
	lisert, err := net.Listen("tcp", "127.0.0.1:8888")
	if err != nil {
		fmt.Println("启动监听错误",err)
		return
	}
	fmt.Println("等待客户端连接")
	// 创建tcp连接
	conn, err := lisert.Accept()
	if err != nil {
		fmt.Println("创建连接错误")
		return
	}
	// 将链接转给rpc解析收数据
	//rpc.ServeConn(conn)
	jsonrpc.ServeConn(conn)
	defer lisert.Close()
	defer conn.Close()
}

客户端

package main

import (
	"fmt"
	"net/rpc/jsonrpc"
)

func main() {
	// 连接服务端
	server, err := jsonrpc.Dial("tcp", "127.0.0.1:8888")
	if err != nil {
		fmt.Println("连接服务端失败")
		return
	}
	// 创建一个参数来接受远程函数的返回值
	var reply string
	//调用远程函数
	server.Call("Hello.SayHello", "张三", &reply)
	fmt.Println(reply)
	defer server.Close()

}

posted on 2021-10-10 22:13  信奉上帝的小和尚  阅读(70)  评论(0编辑  收藏  举报

导航