標籤:cep fat 函數 dial src error err turn sock
udp與tcp的不同在於用戶端請求方式不同,udp缺少Accept函數。
一個簡單的udp用戶端:
package main;import ("net""log""fmt")func chkError(err error) {if err != nil {log.Fatal(err);}}func main() {//擷取udpaddrudpaddr, err := net.ResolveUDPAddr("udp4", "127.0.0.1:8080");chkError(err);//串連,返回udpconnudpconn, err2 := net.DialUDP("udp", nil, udpaddr);chkError(err2);//寫入資料_, err3 := udpconn.Write([]byte("client\r\n"));chkError(err3);buf := make([]byte, 256);//讀取服務端發送的資料_, err4 := udpconn.Read(buf);chkError(err4);fmt.Println(string(buf));}
udp服務端代碼:
package main;import ("net""log""fmt")func chkError(err error) {if err != nil {log.Fatal(err);}}func clientHandle(conn *net.UDPConn) {defer conn.Close();buf := make([]byte, 256);//讀取資料//注意這裡返回三個參數//第二個是udpaddr//下面向用戶端寫入資料時會用到_, udpaddr, err := conn.ReadFromUDP(buf);if err != nil {return;}fmt.Println(string(buf));conn.WriteToUDP([]byte("hello,client \r\n"), udpaddr);}func main() {udpaddr, err := net.ResolveUDPAddr("udp4", "127.0.0.1:8080");chkError(err);//監聽連接埠udpconn, err2 := net.ListenUDP("udp", udpaddr);chkError(err2);//udp沒有對用戶端串連的Accept函數for {clientHandle(udpconn);}}
go語言net包udp socket的使用