我正在对流中的多个对象进行编码和发送。我将它们解码,如下面的代码所示,保持连接打开。我在第一个之后解码所有对象时收到“缓冲区中的额外数据”错误。
func handleAggregatorConnection(conn net.Conn) {
var connectionNumber = connectionCount
connectionCount += 1
log.Println("connection event: starting handle aggregator connection")
dec := gob.NewDecoder(conn)
var colorArrays map[string][]string
colorArrayValue := &colorArrays
var i P
ai := &i
for {
//err := dec.Decode(colorArrayValue)
err := dec.Decode(ai)
if err == nil {
receivedColorResultFromAggregator = true
//log.Printf("received : %+v", colorArrayValue)
log.Println("received:", i)
aggregatorResultMap[connectionNumber] = *colorArrayValue
log.Println("control server: received object from aggregator ", aggregatorR\
esultMap)
} else if err == io.EOF {
log.Println("reached end of stream while" +
"listening to aggregator")
delete(aggregatorResultMap, connectionNumber)
break
} else {
log.Println("error decoding:", err)
break
}
}
log.Println("connection event: closing aggregator connection")
conn.Close()
}