Tag Archive | UDP
Simple UDP Client/Server in golang
Being a new language, the example codes are not easily available for Golang. For other languages like Java and C, just put a keyword in Google, you will find a lot examples for it. Same is not true for golang.
I faced the same issue for UDP Client and Server code. Finally I managed to code with help of few available examples.
First set the PATH for go by using following command.
export PATH=/path/to/go/bin:$PATH
Here is the code for the same.
Server: server.go
package main import ( "fmt" "net" "os" ) /* A Simple function to verify error */ func CheckError(err error) { if err != nil { fmt.Println("Error: " , err) os.Exit(0) } } func main() { /* Lets prepare a address at any address at port 10001*/ ServerAddr,err := net.ResolveUDPAddr("udp",":10001") CheckError(err) /* Now listen at selected port */ ServerConn, err := net.ListenUDP("udp", ServerAddr) CheckError(err) defer ServerConn.Close() buf := make([]byte, 1024) for { n,addr,err := ServerConn.ReadFromUDP(buf) fmt.Println("Received ",string(buf[0:n]), " from ",addr) if err != nil { fmt.Println("Error: ",err) } } }
Run this file with following command
go run server.go
Client: client.go
package main import ( "fmt" "net" "time" "strconv" ) func CheckError(err error) { if err != nil { fmt.Println("Error: " , err) } } func main() { ServerAddr,err := net.ResolveUDPAddr("udp","127.0.0.1:10001") CheckError(err) LocalAddr, err := net.ResolveUDPAddr("udp", "127.0.0.1:0") CheckError(err) Conn, err := net.DialUDP("udp", LocalAddr, ServerAddr) CheckError(err) defer Conn.Close() i := 0 for { msg := strconv.Itoa(i) i++ buf := []byte(msg) _,err := Conn.Write(buf) if err != nil { fmt.Println(msg, err) } time.Sleep(time.Second * 1) } }
Run this file with following command in another terminal
go run client.go
Recent Comments