服務端:
package main import ( "fmt" "net" ) func main() { //創建udp地址 udp_addr, err := net.ResolveUDPAddr("udp", "127.0.0.1:8000") if err != nil { fmt.Println(err.Error()) } //監聽udp地址 udp_conn, err := net.ListenUDP("udp", udp_addr) if err != nil { fmt.Println(err.Error()) } //延遲關閉監聽 defer udp_conn.Close() for { buf := make([]byte, 1024) //阻塞獲取數據 n, rAddr, err := udp_conn.ReadFromUDP(buf) if err != nil { fmt.Println(err.Error()) } fmt.Printf("客戶端【%s】,發送的數據為:%s\n", rAddr, string(buf[:n])) //發送給客戶端數據 _, errs := udp_conn.WriteToUDP([]byte("nice to meet you"), rAddr) if errs != nil { fmt.Println(err.Error()) } } }
客戶端:
package main import ( "fmt" "net" "os" ) func main() { conn, err := net.Dial("udp", ":8000") if err != nil { fmt.Println(err.Error()) } defer conn.Close() go func() { str := make([]byte, 2048) n, _ := os.Stdin.Read(str) _, err1 := conn.Write(str[:n]) if err1 != nil { fmt.Println(err1.Error()) } }() buf := make([]byte, 2048) for { //讀取數據 n, err := conn.Read(buf) if err != nil { fmt.Println(err.Error()) } fmt.Println("讀到的數據:" + string(buf[:n])) } }