【Go 语言社区】golang rpc 简单范例

RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。

它的工作流程如下图:

golang 使用 RPC的例子如下:

服务器端代码:

这里暴露了一个RPC接口,一个HTTP接口

package main

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

type Watcher int

func (w *Watcher) GetInfo(arg int, result *int) error { *result = 1 return nil }

func main() {

http.HandleFunc("/ghj1976", Ghj1976Test)

watcher := new(Watcher) rpc.Register(watcher) rpc.HandleHTTP()

l, err := net.Listen("tcp", ":1234") if err != nil { fmt.Println("监听失败,端口可能已经被占用") } fmt.Println("正在监听1234端口") http.Serve(l, nil) }

func Ghj1976Test(w http.ResponseWriter, r *http.Request) { io.WriteString(w, "<html><body>ghj1976-123</body></html>") }

客户端代码:

package main

import ( "fmt" "net/rpc" )

func main() { client, err := rpc.DialHTTP("tcp", "127.0.0.1:1234") if err != nil { fmt.Println("链接rpc服务器失败:", err) } var reply int err = client.Call("Watcher.GetInfo", 1, &reply) if err != nil { fmt.Println("调用远程服务失败", err) } fmt.Println("远程服务返回结果:", reply) }

服务器端代码执行截图

客户端代码执行截图

HTTP网页执行截图:

原文发布于微信公众号 - Golang语言社区(Golangweb)

原文发表时间:2016-02-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏无所事事者爱嘲笑

ionic2 处理android硬件返回按钮

14140
来自专栏崔庆才的专栏

只会用Selenium爬网页?Appium爬App了解一下

4.1K60
来自专栏Youngxj

Html5 Canvas多表盘时钟绘制

18940
来自专栏电光石火

给树莓派安装中文字库

树莓派默认是采用英文字库的,而且系统里没有预装中文字库,所以即使你在locale中改成中文,也不会显示中文,只会显示一堆方块。因此需要我们手动来安装中文字体...

20550
来自专栏张泽旭的专栏

SMTP邮件发送命令

第一步,远程登录smtp服务器 在命令行窗口输入 telnet smtp.163.com 25 然后回车 第二步,用户登录 输入 he...

35720
来自专栏前端儿

前端代码乱糟糟?是时候引入代码质量检查工具了

为了统一团队的代码规范,除了一纸规范说明之外,还需要引入工具进行限制。虽说工具并不能完全实现规范中的规则,但至少能够在一定程度上缓解代码不统一的局面。

38910
来自专栏Nian糕的私人厨房

WebPack 模块化打包工具(下)

本篇博文的内容根据 入门 Webpack,看这篇就够了 该篇文章总结而来,其代码、模块示例、功能拓展部分均有所删减,若是想了解更多关于 WebPack 的详细内...

45650
来自专栏青玉伏案

iOS逆向工程之App脱壳

本篇博客以微信为例,给微信脱壳。"砸壳"在iOS逆向工程中是经常做的一件事情,,因为从AppStore直接下载安装的App是加壳的,其实就是经过加密的,这个“砸...

56850
来自专栏mySoul

js跨站脚本

跨站脚本,称为xss这个术语用来表示一类的安全问题,指攻击者向目标web站点注入html标签或者脚本。

19940

如何使用Midnight Commander,一个可视文件管理器

对于初学者来说,使用命令行工具来管理Linux服务器上的文件的方式可能是令人生畏的,耗时的,有时甚至是会带来风险的。而资深使用者会希望切换到更合适的工具来处理不...

1.5K50

扫码关注云+社区

领取腾讯云代金券