package main

import (
	"fmt"
	"io"
	"net"
)

func main() {
	// 1. 连接服务器
	conn, err := net.Dial("udp", "localhost:9999")
	if err != nil {
		fmt.Println("Error connecting:", err)
		return
	}
	defer conn.Close()
	fmt.Println("Connected to server")

	// 2. 发送数据
	_, err = conn.Write([]byte("Hello, Server! I am a client."))
	if err != nil {
		fmt.Println("Error writing data:", err)
		return
	}
	fmt.Println("Written 22 bytes:", "Hello, Server! I am a client.")

	// 3. 接收数据
	buf := make([]byte, 1500)
	n, err := conn.Read(buf)
	if err == io.EOF {
		fmt.Println("Server closed connection")
		return
	}
	if err != nil {
		fmt.Println("Error reading data:", err)
		return
	}
	fmt.Println("Read", len(buf), "bytes:", "Hello, Server! I have received your message: "+string(buf[:n])+"\n")
}
