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. php优秀框架codeigniter学习系列——common.php

    文件位于system/core/common.php,是框架核心文件. 该文件中定义了一系列的函数,都是框架运行中经常需要用到的.下面逐一介绍. is_php /** * Determines if ...

  2. java学习笔记15(String 类,StringBuffer)

    /* * String类的特点: * 所有的""都是String的对象 * 字符串一旦创建就是常量,不能改变 */ public class StringDemo { public ...

  3. python上传图片并识别图片

    from json_response import JsonResponse from aip import AipOcr import os import time BASE_DIR = os.pa ...

  4. maven install中依赖关系打包failed

    maven 中maven dependencies中依赖出现了项目,无法打包 ,出现的错误如图.说明:依赖的项目为project-dao  打包的项目为project-service  都在proje ...

  5. HDU1253-胜利大逃亡 (三维BFS)

    题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1253 胜利大逃亡 Time Limit:4000/2000MS(Java/Others)Memory ...

  6. Linux系统下curl命令上传文件,文件名包含逗号无法上传

    使用curl命令,将备份好的图片全部重新导入到seaweedfs,图片全部以存储在seaweedfs中的fid命令, fid中间有一个逗号,使用curl命令时报错: curl: (26) couldn ...

  7. [LeetCode&Python] Problem 21. Merge Two Sorted Lists

    Merge two sorted linked lists and return it as a new list. The new list should be made by splicing t ...

  8. Sonar理论篇

    一.Sonar是什么    Sonar是一个代码质量管理的开源平台,用于管理源代码的质量,通过插件形式,可以支持包括java.C#.JavaScript等二十余种编程语言的代码质量管理与检测. Son ...

  9. Beta周第14次Scrum会议(11/23)【王者荣耀交流协会】

    一.小组信息 队名:王者荣耀交流协会 小组成员 队长:高远博 成员:王超,袁玥,任思佳,王磊,王玉玲,冉华 小组照片 二.开会信息 时间:2017/11/23 17:02~17:14,总计12min. ...

  10. hdu1358 Period KMP

    给出一个字符串,找出所有可以作为它循环节的子串长度 利用kmp的失配数组的性质,可以直接做 #include<stdio.h> #include<string.h> ; cha ...