登录
首页 >  Golang >  Go问答

gob 错误编码主体:gob:类型未注册接口:在 golang 中

来源:stackoverflow

时间:2024-04-24 12:24:38 311浏览 收藏

大家好,我们又见面了啊~本文《gob 错误编码主体:gob:类型未注册接口:在 golang 中》的内容中将会涉及到等等。如果你正在学习Golang相关知识,欢迎关注我,以后会给大家带来更多Golang相关文章,希望我们能一起进步!下面就开始本文的正式内容~

问题内容

在rpc通信过程中,服务器无法计算出正确的值。

我收到此错误,并且我已经考虑了很长时间。

您能给点建议吗

package main

import (
    "crypto/ecdsa"
    "crypto/elliptic"
    "crypto/rand"
    f "fmt"
    "log"
    "net"
    "net/rpc"
)

type Calc int //RPC 서버에 등록하기 위한 임의의 타입정의

type Args struct {
    A, B int
}
type Reply struct { //받을 값
    PrivateKey ecdsa.PrivateKey
    PublicKey  []byte
}

func (c *Calc) Get(args Args, reply *Reply) error {
    private, public := NewKeyPair()
    reply.PrivateKey = private
    reply.PublicKey = public

    return nil
}
func main() {
    rpc.Register(new(Calc))
    ln, err := net.Listen("tcp", ":6000")
    if err != nil {
        f.Println(err)
        return
    }
    defer ln.Close()

    for {
        conn, err := ln.Accept()
        if err != nil {
            continue
        }
        f.Println("Connected")
        defer conn.Close()
        go rpc.ServeConn(conn)
    }
}

func NewKeyPair() (ecdsa.PrivateKey, []byte) {
    curve := elliptic.P256()

    private, err := ecdsa.GenerateKey(curve, rand.Reader)
    if err != nil {
        log.Panic(err)
    }
    pubKey := append(private.PublicKey.X.Bytes(), private.PublicKey.Y.Bytes()...)

    return *private, pubKey
}

----错误----

2022/06/20 19:58:35 rpc:gob 错误编码正文:gob:类型未注册接口:elliptic.p256curve


正确答案


你可以通过调用这个来注册接口 gob.Register(elliptic.P256())

但这将导致您出现下一个错误。 目前无法将 gob 与椭圆形一起使用。

使用1.19以下的任何版本, 它会起作用的

本篇关于《gob 错误编码主体:gob:类型未注册接口:在 golang 中》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>