How to Create a UDP Server and Client in Go

Web
Create a UDP server and client in Go using the net package to listen for and send datagrams without a persistent connection.

Use the net package to create a UDPAddr and a UDPConn for both the server and client. The server listens on a port and reads datagrams, while the client writes datagrams to the server's address.

package main

import (
	"fmt"
	"log"
	"net"
)

func main() {
	// Server
	addr, err := net.ResolveUDPAddr("udp", ":8080")
	if err != nil {
		log.Fatal(err)
	}
	conn, err := net.ListenUDP("udp", addr)
	if err != nil {
		log.Fatal(err)
	}
	defer conn.Close()

	buf := make([]byte, 1024)
	for {
		n, clientAddr, err := conn.ReadFromUDP(buf)
		if err != nil {
			log.Fatal(err)
		}
		fmt.Printf("Received from %s: %s\n", clientAddr, string(buf[:n]))
		conn.WriteToUDP([]byte("Hello Client"), clientAddr)
	}
}
package main

import (
	"fmt"
	"log"
	"net"
)

func main() {
	// Client
	addr, err := net.ResolveUDPAddr("udp", "localhost:8080")
	if err != nil {
		log.Fatal(err)
	}
	conn, err := net.DialUDP("udp", nil, addr)
	if err != nil {
		log.Fatal(err)
	}
	defer conn.Close()

	_, err = conn.Write([]byte("Hello Server"))
	if err != nil {
		log.Fatal(err)
	}

	buf := make([]byte, 1024)
	n, err := conn.Read(buf)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Printf("Received: %s\n", string(buf[:n]))
}