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

龙岗网站制作设计网络营销服务公司

龙岗网站制作设计,网络营销服务公司,企业 手机门户网站,南京seo优化推广概述 Golang 提供 net/rpc/jsonrpc 库来实现rpc方法采用 json 方式进行数据编解码#xff0c;支持跨语言调用 这里实现跨语言示例 1 #xff09;go 服务端 package main import ( log net net/rpc net/rpc/jsonrpc )…概述 Golang 提供 net/rpc/jsonrpc 库来实现rpc方法采用 json 方式进行数据编解码支持跨语言调用 这里实现跨语言示例 1 go 服务端 package main import ( log net net/rpc net/rpc/jsonrpc ) // 定义服务接口 type Arith int // 定义接口方法参数和返回值都应该是指针类型 func (t *Arith) Multiply(args *Args, reply *int) error {*reply args.A * args.Blog.Print(参数, args)return nil } // Args 是传递给服务的参数结构 type Args struct { A, B int } func main() { arith : new(Arith) rpc.Register(arith) l, err : net.Listen(tcp, :1234) if err ! nil { log.Fatal(listen error:, err) } defer l.Close() for { conn, err : l.Accept() if err ! nil { log.Print(accept error:, err) continue } // 使用 jsonrpc 包处理连接 go func() { jsonrpc.ServeConn(conn) conn.Close() }() } }2 nodejs 客户端1 const net require(net); const readline require(readline); // 创建一个 TCP 客户端 const client new net.Socket(); // 连接到服务器 client.connect(1234, localhost, () { console.log(Connected to server!); // 发送请求到服务器 const request JSON.stringify({ jsonrpc: 2.0, method: Arith.Multiply, params: [{ A: 7, B: 8 }], id: 1 }); client.write(request \n); }); // 处理从服务器返回的数据 const rl readline.createInterface({ input: client, output: process.stdout, terminal: false }); rl.on(line, (line) { const response JSON.parse(line); console.log(Server response:, response.result); client.end(); }); client.on(error, (err) { console.error(Socket error:, err); }); client.on(close, () { console.log(Connection closed); });3 nodejs 客户端2 const jayson require(jayson); const client jayson.client.tcp({ port: 1234, host: localhost }); // 定义要调用的方法以及参数 const request { jsonrpc: 2.0, method: Arith.Multiply, params: [{ A: 7, B: 8 }], id: 1 }; // 发送请求并处理响应 client.request(request, function(err, response) { if (err) { console.error(请求出错:, err); return; } console.log(服务器响应:, response.result); // 输出乘法的结果 });4 go 客户端3 package mainimport (fmtnetnet/rpcnet/rpc/jsonrpc )type Args struct { A int json:A B int json:B } func main() {// 1. 用 net.Dial和rpc微服务端建立连接conn, err1 : net.Dial(tcp, 127.0.0.1:1234)if err1 ! nil {fmt.Println(err1)}//2、当客户端退出的时候关闭连接defer conn.Close()// 3、建立基于json编解码的rpc服务client : rpc.NewClientWithCodec(jsonrpc.NewClientCodec(conn))// 4、调用远程函数var reply interr2 : client.Call(Arith.Multiply, Args{A: 7, B: 8}, reply)if err2 ! nil {fmt.Println(err2)}// 5、获取微服务返回的数据fmt.Println(reply) }总结 这里演示了基于go语言为服务端nodejs 和 golang 为客户端的3种示范注意上面 nodejs版本中的 params 的格式与 golang 中的区别标准库的RPC默认采用Go语言特有的gob编码没法实现跨语言调用golang官方还提供了 net/rpc/jsonrpc 库实现RPC方法JSON RPC采用JSON进行数据编解码因而支持跨语言调用但目前的jsonrpc库是基于tcp协议实现的暂时不支持使用http进行数据传输另外Mac环境在没有服务端服务时可用 nc 工具调试客户端 $ nc -l 127.0.0.1 1234 linux下需要安装, $ yum install -y ncnc是netcat的简写是一个功能强大的网络工具有着网络界的瑞士军刀美誉nc命令的主要作用如下 实现任意TCP/UDP端口的侦听nc可以作为server以TCP或UDP方式侦听指定端口端口的扫描nc可以作为client发起TCP或UDP连接机器之间传输文件机器之间网络测速
http://www.zqtcl.cn/news/442389/

相关文章:

  • wordpress滑块代码seo外链增加
  • 衡阳网站建设公司地址书店网站怎么做
  • 如何检查网站是否做cdn加速html网页基础代码
  • 做网站的岗位好吗钓鱼网站到底怎么做
  • 大连做网站那个公司最好wordpress+高清背景
  • 怎样做网站xml案例建网站
  • 海口发布最新通告用二级域名做网站对seo
  • 网站301重定向 权重转移网站不用下载免费软件
  • 网站系统升级昆明做百度网站电话
  • 电子商务与网站建设实践论文wordpress 主题目录
  • 网站页面打不开中小企业网站推广
  • 佛山建网站企业网站怎么维护
  • 网站制作报价明细wordpress喜欢
  • 网站开发2008文化传播有限公司网站建设
  • 个人账号如何注册网站广州专业网站改版设计公司
  • wordpress视频网站采集沈阳建设工程质量检测中心网站
  • 做网站优化哪家好远程管理wordpress站群
  • 实用写作网站做企业策划的公司
  • 如何建立自己手机网站58招聘网站官网
  • 网站程序源码下载网站怎么做定位功能
  • 深圳vi设计公司联系西安seo诊断
  • 老虎淘客系统可以做网站吗绍兴网站专业制作
  • 小公司做网站需要 align center
  • 自己做的网站怎么上传网络什么网站可以找人做系统
  • 公司在兰州要做网站怎样选择做期货关注什么网站
  • 响应式网站是指自适应吗新开传奇网站首区
  • 做网站产品介绍wordpress 参数 传递
  • 网站颜色搭配技巧建设摩托车价格大全
  • 哪些网站可以做画赚钱宁波模板建站定制
  • 昆明门户网站建设wordpress权限设置