我有兩個程序,一個監(jiān)聽器和一個撥號器。我想要在同一個端口上進行雙向 UDP 通信。我的監(jiān)聽器按預期讀取從撥號器發(fā)送的數(shù)據(jù)報,然后發(fā)回自己的 5 個數(shù)據(jù)報。唯一的問題是,我的撥號器沒有讀取它。我嘗試使用 net.DialUDP 但當我使用它時,從撥號器發(fā)送了 0 個數(shù)據(jù)報。聽眾 - 效果很好func main() {addr := net.UDPAddr{ Port: 7000, IP: net.ParseIP("127.0.0.1"),}conn, err := net.ListenUDP("udp", &addr)defer conn.Close()if err != nil { panic(err)}i := 0b := make([]byte, 10)conn.ReadFromUDP(b)fmt.Println(string(b[:]))for i < 5 { conn.WriteToUDP([]byte("sending back"), &addr) i++}}發(fā)送數(shù)據(jù)報但無法讀取它們的撥號程序func main() {sock, _ := net.Dial("udp", "127.0.0.1:7000")buf := make([]byte, 100)_, werr := sock.Write([]byte("first send"))if werr != nil { fmt.Println(werr)}sock.Read(buf)fmt.Println(string(buf[:]))}不發(fā)送任何數(shù)據(jù)報的撥號程序func main() {remote, _ := net.ResolveUDPAddr("udp", "127.0.0.1:7000")sock, _ := net.DialUDP("udp", nil, remote)buf := make([]byte, 10)for { sock.WriteToUDP([]byte("first send"), remote) sock.ReadFromUDP(buf) fmt.Println(string(buf[:]))}}
1 回答

qq_笑_17
TA貢獻1818條經(jīng)驗 獲得超7個贊
如有疑問,只需使用 ListenUDP。它將發(fā)送和接收數(shù)據(jù)報。
sock, _ := net.Dial("udp", "127.0.0.1:7000")
這將創(chuàng)建一個net.Conn
,它只是一個基本的連接接口。您必須將其聲明為 a*net.UDPConn
才能使實際UDP
方法起作用。
sock, _ := net.DialUDP("udp", nil, remote)
這將創(chuàng)建一個“已連接”的 UDP 套接字,并使用裸Write
方法發(fā)送到單個遠程地址。
- 1 回答
- 0 關注
- 231 瀏覽
添加回答
舉報
0/150
提交
取消