Go 语言RPC定义格式如下:

func (t *T) MethodName(argType T1, replyType *T2) error

第一个参数是接收的参数,第二个参数是返回给客户端的参数,第二个参数必

须是指针类型的

如果Server端RPC函数返回错误,即error不为nil,第二个参数不会返回任何信息。

例子如下。

server端

package main

import (
"fmt"
"net"
"net/rpc"
"net/rpc/jsonrpc"
) type Counter struct {
Sum int
} func (this *Counter) Add(i int, r *int) error { if i < 0 {
*r = -1
return fmt.Errorf("data format incorrect")
} this.Sum += i
*r = this.Sum
fmt.Printf("i: %v\n", i)
return nil
} func NewJsonRpcSocketServer() { rpc.Register(new(Counter)) l, err := net.Listen("tcp", ":3333")
if err != nil {
fmt.Printf("Listener tcp err: %s", err)
return
} for {
fmt.Println("wating...")
conn, err := l.Accept()
if err != nil {
fmt.Sprintf("accept connection err: %s\n", conn)
}
go jsonrpc.ServeConn(conn)
} } func main() { NewJsonRpcSocketServer()
}

server端对于参数小于0的情况,返回错误, 并把repoy设置为-1。

client端

package main

import (
"fmt"
"net"
"net/rpc/jsonrpc"
"time"
) func main() { NewJsonRpcSocketClient()
} func NewJsonRpcSocketClient() { timeout := time.Second*30
conn, err := net.DialTimeout("tcp", "127.0.0.1:3333", timeout)
if err != nil {
fmt.Printf("create client err:%s\n", err)
return
}
defer conn.Close() client := jsonrpc.NewClient(conn)
var reply int
err = client.Call("Counter.Add", -10, &reply)
if err != nil { fmt.Println("error:", err, "reply:", reply)
return
} fmt.Printf("reply: %d, err: %v\n", reply, err) }

client端传入参数小于0,此时client output:

error: data format incorrect reply: 0

reply仍然是默认值,server端设置的信息没有返回给client。

结果得到验证。

Go RPC返回值的更多相关文章

  1. GetLastError()函数返回值及含义

    GetLastError返回的值通过在api函数中调用SetLastError或SetLastErrorEx设置.函数并无必要设置上一次错误信息,所以即使一次GetLastError调用返回的是零值, ...

  2. GetLastError()返回值列表

    GetLastError()返回值列表: [0]-操作成功完成.[1]-功能错误.[2]-系统找不到指定的文件.[3]-系统找不到指定的路径.[4]-系统无法打开文件.[5]-拒绝访问.[6]-句柄无 ...

  3. GetLastError()返回值列表(3259个错误列表)

    GetLastError()返回值列表: [0]-操作成功完成. [1]-功能错误. [2]-系统找不到指定的文件. [3]-系统找不到指定的路径. [4]-系统无法打开文件. [5]-拒绝访问. [ ...

  4. GetLastError返回值含义

    GetLastError的返回值的含义: (0)-操作成功完成. (1)-功能错误. (2)- 系统找不到指定的文件. (3)-系统找不到指定的路径. (4)-系统无法打开文件. (5)-拒绝访问. ...

  5. SpringBoot第十一集:整合Swagger3.0与RESTful接口整合返回值(2020最新最易懂)

    SpringBoot第十一集:整合Swagger3.0与RESTful接口整合返回值(2020最新最易懂) 一,整合Swagger3.0 随着Spring Boot.Spring Cloud等微服务的 ...

  6. socket读写返回值的处理

    在调用socket读写函数read(),write()时,都会有返回值.如果没有正确处理返回值,就可能引入一些问题 总结了以下几点 1当read()或者write()函数返回值大于0时,表示实际从缓冲 ...

  7. Dapper逆天入门~强类型,动态类型,多映射,多返回值,增删改查+存储过程+事物案例演示

    Dapper的牛逼就不扯蛋了,答应群友做个入门Demo的,现有园友需要,那么公开分享一下: 完整Demo:http://pan.baidu.com/s/1i3TcEzj 注 意 事 项:http:// ...

  8. 由Dapper QueryMultiple 返回数据的问题得出==》Dapper QueryMultiple并不会帮我们识别多个返回值的顺序

    异常汇总:http://www.cnblogs.com/dunitian/p/4523006.html#dapper 今天帮群友整理Dapper基础教程的时候手脚快了点,然后遇到了一个小问题,Dapp ...

  9. C#进阶系列——WebApi 接口返回值不困惑:返回值类型详解

    前言:已经有一个月没写点什么了,感觉心里空落落的.今天再来篇干货,想要学习Webapi的园友们速速动起来,跟着博主一起来学习吧.之前分享过一篇 C#进阶系列——WebApi接口传参不再困惑:传参详解  ...

随机推荐

  1. lvs的FULLNAT

  2. python day05--字典

    一.字典结构 {key:valu} 注意: key必须是不可变(可哈希)的. value没有要求.可以保存任意类型的数据. dic = {123: 456, True: 999, "id&q ...

  3. 临时调用call()与apply()方法

    当在某个局域范围内要调用构造函数中或者其他局域范围内的方法 此时可以用到临时调用方法call与apply 虽然这两个方法都是起临时调用的功能,但是用法不一样 call(obj,val) obj:对象名 ...

  4. JAVA基础部分复习(四、抽象类与接口)

    抽象类与接口的定义: package cn.review.day02; /** * 抽象类 * 定义: * 1.抽象类使用关键字abstract修饰 * 2.抽象方法必须定义在抽象类中,抽象方法没有方 ...

  5. 牛客OI赛制测试赛2

    A题: https://www.nowcoder.com/acm/contest/185/A 链接:https://www.nowcoder.com/acm/contest/185/A来源:牛客网 题 ...

  6. Java中的Arrays类使用详解

    首先先创建一个打印数组的方法,方便后面直接使用 public static void output(int []a) { for(int i=0;i<a.length;i++) { System ...

  7. SEO : 建站注意

    1.url格式.尽可能的短一些,实践证明,较短的url格式还是比较利于搜索引擎收录的. 2.网站前台要纯静态.虽然搜索引擎对静态页面和动态页面并没有本质上的差别对待,但是实践告诉我们静态页面对服务器的 ...

  8. webservice------UDDI SOAP WSDL 之间的关系

    [  真的是服了一些博客.....啰里啰唆的将一堆==   根本不知道讲的是什么 ... 在描述一个定义之前  (不如先通俗的讲它是干什么的)] SOAP(Simple Object Access P ...

  9. 第十三次CCF第四题 1803——04 博弈

    我又写了一个简洁版的2.0: 可以作为博弈搜索树的模板  : https://www.cnblogs.com/xidian-mao/p/9389974.html 废话ps: 开始觉得这是一道简单得博弈 ...

  10. HDU 6345:子串查询(前缀和)

    子串查询 Time Limit: 3500/3000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others) Total Sub ...