我的代码组织结构是这样的
package_name/
server/
rpc_server.go
client_test.go
我注册一个 RPC 服务器以接收来自其他节点的消息。
type RPCMessageArgs struct {
Operation string
Info Message
}
type Message struct {
NodeID uint64
Payload interface{}
}
func init() {
gob.Register(BroadcastMessage{})
}
func main() {
// start rpc server
}
我使用命令 启动服务器文件夹中的 RPC 服务器。go run rpc_server.go
我在client_test.go中的测试代码如下
package package_name
import (
"encoding/gob"
"log"
"net/rpc"
"strconv"
"testing"
)
type BroadcastMessage struct {
Payload interface{}
}
func TestClient(t *testing.T) {
gob.Register(BroadcastMessage{})
args := &RPCMessageArgs{}
args.Info.NodeID = 3
args.Info.Payload = &BroadcastMessage{}
reply := &RPCMessageReply{}
client, err := rpc.Dial("tcp", ":800"+strconv.Itoa(1))
if err != nil {
log.Fatal("dialing: ", err)
}
err = client.Call("RPCServer.RemoteCall", args, reply)
if err != nil {
log.Fatal("call error: ", err)
}
}
我收到此错误
call error: gob: name not registered for interface: "package_name.BroadcastMessage"
HUWWW
相关分类