1 回答
TA贡献2003条经验 获得超2个赞
在我的本地机器上实现了这个。是的,请检查您的错误,但幸运的是,没有返回任何内容。这是我为解决问题所做的工作。在send_udp初始化Buffer和EncoderINSIDE for 循环中。
func send_udp() error {
dst, err := net.ResolveUDPAddr("udp", "localhost:8080")
if err != nil {
return err
}
conn, err := net.ListenPacket("udp", ":0")
if err != nil {
return err
}
defer conn.Close()
for n := 0; n < 10; n++ {
// inside for loop
var buf bytes.Buffer
encoder := gob.NewEncoder(&buf)
var msg int64 = int64(n) + 1
packet := &Packet{[]int{5}, msg}
err = encoder.Encode(packet)
if err != nil {
return err
}
_, err = conn.WriteTo(buf.Bytes(), dst)
if err != nil {
return err
}
}
return nil
}
Buffer请注意,在for 循环外部声明时,实际上Packet每次添加新循环时都会发送前一个循环,因此当您在函数中n打印返回值时会增加值,但每次都只解码第一个循环。所以如果你打算一次发送它们,你将不得不在你的函数中循环。ReadFromUDPlisten_udpDecoderlisten_udp
- 1 回答
- 0 关注
- 115 浏览
添加回答
举报