zoukankan      html  css  js  c++  java
  • Golang微服务入门到精通之路-2-第一个微服务程序

    1、执行结果

     

    2、代码如下:

    server:

    package main
    
    import (
    	"fmt"
    	"net"
    	"net/rpc"
    )
    
    // 定义类对象
    type World struct {
    }
    
    // 绑定类方法
    func (this *World) HelloWord(name string, resp *string) error {
    	*resp = name + ",你好!"
    	return nil
    }
    
    func main() {
    	// 1、注册rpc服务,绑定对象方法
    	err := rpc.RegisterName("hello", new(World))
    	if err != nil {
    		fmt.Println("注册 rpc 服务失败", err)
    		return
    	}
    
    	// 2、设置监听
    	listener, err := net.Listen("tcp", "127.0.0.1:8800")
    	if err != nil {
    		fmt.Println("net.Listen err:", err)
    		return
    	}
    	defer listener.Close()
    	fmt.Println("开始监听...")
    
    	// 3、建立连接
    	conn, err := listener.Accept()
    	if err != nil {
    		fmt.Println("Accept() err:", err)
    		return
    	}
    	defer conn.Close()
    	fmt.Println("连接成功...")
    
    	// 4、绑定服务
    	rpc.ServeConn(conn)
    }
    

    client:

    package main
    
    import (
    	"fmt"
    	"net/rpc"
    )
    
    func main() {
    	// 1、用apc 连接服务器 -- Dial()
    	conn, err := rpc.Dial("tcp", "127.0.0.1:8800")
    	if err != nil {
    		fmt.Println("Dial err:", err)
    		return
    	}
    	defer conn.Close()
    
    	// 2、调用远程函数
    	var reply string
    	err = conn.Call("hello.HelloWord", "龙小龙", &reply)
    	if err != nil {
    		fmt.Println("Call err:", err)
    		return
    	}
    	fmt.Println(reply)
    }
    

    欢迎来大家QQ交流群一起学习:482713805

  • 相关阅读:
    移动端开发touchstart,touchmove,touchend事件详解和项目
    我对JVM的理解
    快速排序
    归并排序(Merge sort)
    希尔排序
    插入排序
    选择排序
    冒泡排序(Bubble Sort)
    java设计模式之单例模式
    Java中反射机制的理解
  • 原文地址:https://www.cnblogs.com/gsxl/p/15450438.html
Copyright © 2011-2022 走看看