golang网络编程学习-1rpc

网络编程主要的内容是:
1.TCP网络编程
2.http服务
3.rpc服务
4.websocket服务
 

一、rpc

RPC 框架----- 远程过程调用协议RPC(Remote Procedure Call Protocol)-----允许像调用本地服务一样调用远程服务。
RPC是指远程过程调用,也就是说两台服务器A,B,一个应用部署在A服务器上,想要调用B服务器上应用提供的函数/方法,由于不在一个内存空间,不能直接调用,需要通过网络来表达调用的语义和传达调用的数据

 1.1服务端,提供简单的两个数加法运算

package main

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

type Server struct {
}

// 一样的请求和响应结构体
type Req struct {
	Num1 int
	Num2 int
}

type Res struct {
	Num int
}

// 计算两个数的和
func (s Server) Add(req Req, res *Res) error {
	res.Num = req.Num1 + req.Num2
	return nil
}
func main() {
	//1.注册rpc服务
	rpc.Register(new(Server))
	//2.绑定
	rpc.HandleHTTP()
	listen, err := net.Listen("tcp", ":8080")
	if err != nil {
		fmt.Println(err)
		return
	}
	fmt.Println("服务已经启动...")
	http.Serve(listen, nil)
}

1.2客户端,调用服务端的函数

package main

import (
	"fmt"
	"net/rpc"
)

//与服务端一样的请求和响应结构体

type Req struct {
	Num1 int
	Num2 int
}

type Res struct {
	Num int
}

func main() {
	cleint, err := rpc.DialHTTP("tcp", ":8080")
	if err != nil {
		fmt.Println(err)
		return
	}
	req := Req{1, 2}
	var res Res
	cleint.Call("Server.Add", req, &res)
	fmt.Println(res)
}

代码结构:

golang网络编程学习-1rpc_第1张图片

 

你可能感兴趣的:(golang30天,golang,学习,开发语言)