当前位置: 首页 > news >正文

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 mainimport ("fmt""net""net/http""net/rpc"
)type Server struct {
}// 一样的请求和响应结构体
type Req struct {Num1 intNum2 int
}type Res struct {Num int
}// 计算两个数的和
func (s Server) Add(req Req, res *Res) error {res.Num = req.Num1 + req.Num2return 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 mainimport ("fmt""net/rpc"
)//与服务端一样的请求和响应结构体type Req struct {Num1 intNum2 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 Rescleint.Call("Server.Add", req, &res)fmt.Println(res)
}

代码结构:

 

http://www.lryc.cn/news/95108.html

相关文章:

  • 【MQTT】Esp32数据上传采集:最新mqtt插件(支持掉线、真机调试错误等问题)
  • 基于PyQt5的UI界面开发——对基本控件的介绍
  • flink 报错:Caused by: java.lang.RuntimeException: Assigned key must not be null!
  • AN OVERVIEW OF LANGUAGE MODELS RECENT DEVELOPMENTS AND OUTLOOK
  • ArcGIS、ENVI、InVEST、FRAGSTATS等多技术融合提升
  • fastapi初使用,构建自己的api
  • Html基础知识学习——圣杯布局、margin负值、等高布局(十七)
  • 从一长串字符串中找出图片,查看是否符合md5要求
  • 新手小白如何学好UI设计?一般学多久? 优漫动游
  • 实现 Rollup 插件alias 并使用vitest提高开发效率
  • 【DSL】ES+DSL 查询语法
  • Vue第三篇:最简单的vue购物车示例
  • MFC 基于数据库的管理系统
  • EfficientNet论文笔记
  • 系统学习Linux-SSH远程服务(二)
  • PyTorch训练RNN, GRU, LSTM:手写数字识别
  • 基于深度学习的高精度道路瑕疵检测系统(PyTorch+Pyside6+YOLOv5模型)
  • 【裸辞转行】是告别,也是新的开始
  • 了解交换机接口的链路类型(access、trunk、hybrid)
  • Android系统启动流程分析
  • 如何在Ubuntu上安装OpenneBula
  • 解决MySQL中分页查询时多页有重复数据,实际只有一条数据的问题
  • 【数据结构】时间复杂度---OJ练习题
  • 京东自动化功能之商品信息监控是否有库存
  • 【SwitchyOmega】SwitchyOmega 安装及使用
  • CentOS5678 repo源 地址 阿里云开源镜像站
  • 【LLM】Langchain使用[二](模型链)
  • 简单机器学习工程化过程
  • 【MongoDB】SpringBoot整合MongoDB
  • 关于游戏引擎(godot)对齐音乐bpm的技术