为了账号安全,请及时绑定邮箱和手机立即绑定

JSONRPC 服务器返回空结果

JSONRPC 服务器返回空结果

Go
芜湖不芜 2021-06-13 16:08:32
我编写了一个简单的 JSONRPC 服务器来测试 Go 的功能,但我被卡住了,总是得到一个空结果,没有错误和正确的 id。我有以下 Go 代码:package mainimport (    "log"    "net"    "net/rpc"    "net/rpc/jsonrpc")type Experiment intfunc (e *Experiment) Test(i *string, reply *string) error {    s := "Hello, " + *i    reply = &s    log.Println(s, reply)    return nil}func main() {    exp := new(Experiment)    server := rpc.NewServer()    server.Register(exp)    l, err := net.Listen("tcp", ":1234")    if err != nil {        log.Fatal("listen error:", err)    }    for {        conn, err := l.Accept()        if err != nil {            log.Fatal(err)        }        server.ServeCodec(jsonrpc.NewServerCodec(conn))    }}无论我尝试什么,我总是得到以下回应:{"id":1,"result":"","error":null}日志显示一切都在服务器中正常工作。2013/07/17 15:17:13 Hello, Paulo 0xc200090ac0关于发生了什么的任何想法?我正在使用 Go 的最新稳定版本 v1.1.1
查看完整描述

1 回答

?
PIPIONE

TA贡献1829条经验 获得超9个赞

您的回复是指向字符串的指针类型。这是可以的,甚至是必需的,因为第二个参数用于返回答案。但是你这样做:

s := "Hello, " + *i
reply = &s

翻译成:

  • 构造一个具有新值的新字符串。

  • 让回复指向这个新字符串

这让返回的字符串完全不受影响。尝试

*reply = s


查看完整回答
反对 回复 2021-06-21
  • 1 回答
  • 0 关注
  • 206 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信