如何进行Go jsonrpc
发表于:2024-10-15 作者:千家信息网编辑
千家信息网最后更新 2024年10月15日,今天就跟大家聊聊有关如何进行Go jsonrpc,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。大家好,由于这段时间比较忙,好久不更了,现在给大
千家信息网最后更新 2024年10月15日如何进行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安全错误
数据库的锁怎样保障安全
电脑管理be服务器
计算机网络技术什么方向
外文电子书数据库
太原dns服务器大全
网络安全管理和技术培训
类似甲骨文公司的数据库的app
数据库集合的概念
广东省文科历年录取数据库
天下文枢互联网科技怎么样
戴夫的服务器地址
exl多列不重复数据库
接入网络技术三网融合
赫子哥hehe11服务器
深圳软件开发程序
嘉定区品质数据库销售
四川嘉哲软件开发有限公司官网
郑州社区团购软件开发公司
学生体重 胸围数据库
网络安全整改需要多少时间
sam数据库中的哈希值有什么用
mc服务器玩着就崩了
vf数据库与数据表常用命令
江苏润广网络技术有限公司
yapi怎么做数据库校验
数据库接口的调用顺序
沈阳软件开发员待遇
五舟服务器导轨安装拆卸
中专可以学软件开发吗
tmr数据库
sam数据库中的哈希值有什么用