如何进行Go jsonrpc
发表于:2025-01-24 作者:千家信息网编辑
千家信息网最后更新 2025年01月24日,今天就跟大家聊聊有关如何进行Go jsonrpc,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。大家好,由于这段时间比较忙,好久不更了,现在给大
千家信息网最后更新 2025年01月24日如何进行Go jsonrpc
今天就跟大家聊聊有关如何进行Go jsonrpc,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
大家好,由于这段时间比较忙,好久不更了,现在给大家介绍以下go的jsonrpc用法,理论原理不多说,我个人认为看着代码的注释去理解原理是最好的
(1) 服务端代码
package main
import (
"fmt"
"log"
"net"
"net/rpc"
"net/rpc/jsonrpc"
"os"
)
// Resp 返回值结构体
type Resp struct {
Country string
Province string
City string
Latitude float64
Longitude float64
TimeZone string
Data string
}
// Serve
type Serve struct {
}
// 参数结构体
type Agrs struct {
IpString string
Data string
}
//json rpc 处理请求
// GetData 获取数据
func (s *Serve) GetData(agr Agrs, res *Resp) error {
res.City = "南宁"
res.Province = "广西"
res.Country = "中国"
res.Latitude = 888.888
res.Longitude = 111.111
res.TimeZone = "ssss"
res.Data = agr.Data // 返回你传的数据
return nil
}
func main() {
// 初始化jsonRPC
serve := &Serve{}
// 注册服务
rpc.Register(serve)
//绑定端口
address := "127.0.0.1:8080"
tcpAddr, err := net.ResolveTCPAddr("tcp", address)
checkError(err)
listener, err := net.ListenTCP("tcp", tcpAddr)
checkError(err)
log.Println("json rpc is listening", tcpAddr)
// 一直连接
for {
conn, err := listener.Accept()
if err != nil {
continue
}
go jsonrpc.ServeConn(conn)
}
}
// 验证错误
func checkError(err error) {
if err != nil {
fmt.Println("Fatal error ", err.Error())
os.Exit(1)
}
}
(2) 客户端代码
package main
import (
"fmt"
"log"
"net/rpc"
"net/rpc/jsonrpc"
)
type Response struct {
Country string
Province string
City string
Latitude float64
Longitude float64
TimeZone string
Data string
}
type Client struct {
*rpc.Client
}
type agrs struct {
IpString string
Data string
}
func main() {
var (
c = new(Client)
err error
)
if c.Client, err = jsonrpc.Dial("tcp", "127.0.0.1:8080"); err != nil {
log.Fatal("dialing:", err)
}
// Synchronous call
var res Response
var a agrs
a.IpString = "219.140.227.235"
a.Data = "is my data"
err = c.Call("Serve.GetData", &a, &res)
if err != nil {
log.Fatal("ip2addr error:", err)
}
fmt.Println(res)
}
(3) 运行
运行server.go
然后运行client.go
你会有意外惊喜哦
看完上述内容,你们对如何进行Go jsonrpc有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。
代码
内容
运行
原理
数据
结构
服务
惊喜
个人
参数
客户
客户端
时间
更多
最好
注释
理论
知识
端口
篇文章
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全政策工作任务措施
关于网络安全需要注意什么
dfdb分布式数据库
服务器安全狗效果图
七天网络安全插画
深受顾客喜爱的视频聊天软件开发
sql数据库查询某天
小枫服务器小游戏
数据库应用 登录界面
萝岗网络安全服务怎么选择
四川信息安全学习网络安全
思科网络技术学院教程英语常用语
三年级的网络安全知识竞赛
落阳有软件开发公司吗
计算机怎么访问百度的数据库
深空之眼服务器维护中
软件开发进阶系列教学视频
规定网络安全事件等级
渝中区企业网络技术服务包括什么
常见的数据库系统
服务器gpu测试
油菜花收银系统服务器地址
mysql 查询数据库空
我的世界服务器后勤怎么做
马某从事网络安全
怀旧服服务器名字不对
中山后厨管理软件开发商
东营文件审批oa软件开发公司
网络技术专业有哪些选修课
自建邮件服务器 群发