0

我想使用 golang 数据包valyala goRPC通过 rpc 发送图像,但在服务器中接收图像类型时遇到了一些问题。

这是我的客户端代码,它获取 .jpg 图像,对其进行解码并通过 rpc 发送:

c := &gorpc.Client{
  // TCP address of the server.
   Addr: "127.0.0.1:12345",
}
c.Start()
reader, err := os.Open("barranco.jpg")
if err != nil{
    log.Fatal(err)
}

defer reader.Close()

img, _, err := image.Decode(reader)
if err != nil {
    log.Fatal(err)
}


fmt.Print("Pulsa intro para enviar.\n")
bufio.NewReader(os.Stdin).ReadBytes('\n') 

gorpc.RegisterType(img)

resp, err := c.Call(img)

所以在这段代码中,我拍摄了一张名为 barranco.jpg 的图像,我对其进行了解码,但在将其发送到服务器之前,我在客户端上注册了类型。我的问题是,如何在服务器中注册该类型?我总是在服务器中遇到同样的失败,因为我无法注册该图像类型 /:

提前致谢。

4

1 回答 1

1

类型image.Image是一个接口所以你不能注册它,它太抽象了。然而,jpeg 的底层实现是image.Grayor 或image.YCbCr,两者都是具体的结构,您可以键入 assertimg.(Gray)来决定哪个。尝试同时注册image.Grayand image.YCbCr,断言您拥有的,然后作为具体类型发送。

于 2016-04-23T16:59:10.103 回答