1 回答

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