当前位置: > > > > gob 错误编码主体:gob:类型未注册接口:在 golang 中
gob 错误编码主体:gob:类型未注册接口:在 golang 中
来源:stackoverflow
2024-04-24 12:24:38
0浏览
收藏
大家好,我们又见面了啊~本文《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的相关知识,请关注米云公众号!
