12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- package main
- import (
- "flag"
- "fmt"
- "net"
- "os"
- )
- func main() {
- //180.177.2.133 TW
- //124.244.86.40 HK
- ip := flag.String("ip", "180.177.2.133:62531", "IP address to send and receive UDP packets")
- port := flag.Int("port", 8890, "Port to send and receive UDP packets")
- flag.Parse()
- if *ip == "" {
- fmt.Println("IP address is required")
- os.Exit(1)
- }
- addr := net.UDPAddr{
- IP: net.ParseIP(*ip),
- Port: *port,
- }
- conn, err := net.DialUDP("udp", nil, &addr)
- if err != nil {
- fmt.Printf("Failed to connect to UDP server: %v\n", err)
- os.Exit(1)
- }
- defer conn.Close()
- localAddr := conn.LocalAddr().(*net.UDPAddr)
- fmt.Printf("Local address: %s\n", localAddr.String())
- message := []byte("Hello UDP Server")
- go func() {
- for {
- _, err := conn.Write(message)
- if err != nil {
- fmt.Printf("Failed to send UDP packet: %v\n", err)
- os.Exit(1)
- }
- }
- }()
- buffer := make([]byte, 1024)
- for {
- n, remoteAddr, err := conn.ReadFromUDP(buffer)
- if err != nil {
- fmt.Printf("Failed to read UDP packet: %v\n", err)
- continue
- }
- if remoteAddr.IP.String() == *ip {
- fmt.Printf("Received UDP packet from %s: %s\n", remoteAddr, string(buffer[:n]))
- }
- }
- }
|