我是一个接受连接的简单 TCP 服务器,使用 http.Get 获取 URL,然后使用 gob 对响应进行编码。但是 gob 无法对 http.gzipReader 进行编码。在编码时,它会给出以下错误消息:
gob: type not registered for interface: http.gzipReader
我的代码如下:
package main
import (
"encoding/gob"
"fmt"
"log"
"net"
"net/http"
"os"
)
const (
CONN_HOST = "localhost"
CONN_PORT = "3333"
CONN_TYPE = "tcp"
)
func main() {
// Listen for incoming connections.
l, err := net.Listen(CONN_TYPE, CONN_HOST+":"+CONN_PORT)
if err != nil {
fmt.Println("Error listening:", err.Error())
os.Exit(1)
}
for {
conn, err := l.Accept()
if err != nil {
fmt.Println("Error accepting: ", err.Error())
os.Exit(1)
}
go handleRequest(conn)
}
}
func handleRequest(conn net.Conn) {
res, err :=
http.Get("http://info.cern.ch/hypertext/WWW/TheProject.html")
if err != nil {
log.Fatal(err)
} else {
encoder := gob.NewEncoder(conn)
er := encoder.Encode(res)
if er != nil {
fmt.Println(er)
}
}
conn.Write([]byte("Message received."))
conn.Close()
}
有没有办法对 http.gzipReaderc 进行编码?我看到了 gob.Register() 的示例,但我正在尝试注册 http.gzipReaderc 。但无法这样做。有人可以建议我解决这个问题吗?