main.go 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. package main
  2. import (
  3. "flag"
  4. "fmt"
  5. "net"
  6. "os"
  7. )
  8. func main() {
  9. //180.177.2.133 TW
  10. //124.244.86.40 HK
  11. ip := flag.String("ip", "180.177.2.133:62531", "IP address to send and receive UDP packets")
  12. port := flag.Int("port", 8890, "Port to send and receive UDP packets")
  13. flag.Parse()
  14. if *ip == "" {
  15. fmt.Println("IP address is required")
  16. os.Exit(1)
  17. }
  18. addr := net.UDPAddr{
  19. IP: net.ParseIP(*ip),
  20. Port: *port,
  21. }
  22. conn, err := net.DialUDP("udp", nil, &addr)
  23. if err != nil {
  24. fmt.Printf("Failed to connect to UDP server: %v\n", err)
  25. os.Exit(1)
  26. }
  27. defer conn.Close()
  28. localAddr := conn.LocalAddr().(*net.UDPAddr)
  29. fmt.Printf("Local address: %s\n", localAddr.String())
  30. message := []byte("Hello UDP Server")
  31. go func() {
  32. for {
  33. _, err := conn.Write(message)
  34. if err != nil {
  35. fmt.Printf("Failed to send UDP packet: %v\n", err)
  36. os.Exit(1)
  37. }
  38. }
  39. }()
  40. buffer := make([]byte, 1024)
  41. for {
  42. n, remoteAddr, err := conn.ReadFromUDP(buffer)
  43. if err != nil {
  44. fmt.Printf("Failed to read UDP packet: %v\n", err)
  45. continue
  46. }
  47. if remoteAddr.IP.String() == *ip {
  48. fmt.Printf("Received UDP packet from %s: %s\n", remoteAddr, string(buffer[:n]))
  49. }
  50. }
  51. }