zoukankan      html  css  js  c++  java
  • 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()
    
    }
    
    
  • 相关阅读:
    隐语义模型LFM
    基于内容的推荐、协同过滤
    评定标准
    函数式模型示例
    函数式模型概述
    序贯模型
    seq2seq
    链队列
    顺序栈
    线性表的静态链表存储结构
  • 原文地址:https://www.cnblogs.com/wtil/p/15391132.html
Copyright © 2011-2022 走看看