1 回答

TA貢獻2003條經驗 獲得超2個贊
在我的本地機器上實現(xiàn)了這個。是的,請檢查您的錯誤,但幸運的是,沒有返回任何內容。這是我為解決問題所做的工作。在send_udp初始化Buffer和EncoderINSIDE for 循環(huán)中。
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 循環(huán)外部聲明時,實際上Packet每次添加新循環(huán)時都會發(fā)送前一個循環(huán),因此當您在函數中n打印返回值時會增加值,但每次都只解碼第一個循環(huán)。所以如果你打算一次發(fā)送它們,你將不得不在你的函數中循環(huán)。ReadFromUDPlisten_udpDecoderlisten_udp
- 1 回答
- 0 關注
- 157 瀏覽
添加回答
舉報