util.go 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. package test
  2. import (
  3. "fmt"
  4. "net"
  5. "time"
  6. frpNet "github.com/fatedier/frp/utils/net"
  7. )
  8. func sendTcpMsg(addr string, msg string) (res string, err error) {
  9. c, err := frpNet.ConnectTcpServer(addr)
  10. defer c.Close()
  11. if err != nil {
  12. err = fmt.Errorf("connect to tcp server error: %v", err)
  13. return
  14. }
  15. timer := time.Now().Add(5 * time.Second)
  16. c.SetDeadline(timer)
  17. c.Write([]byte(msg))
  18. buf := make([]byte, 2048)
  19. n, errRet := c.Read(buf)
  20. if errRet != nil {
  21. err = fmt.Errorf("read from tcp server error: %v", errRet)
  22. return
  23. }
  24. return string(buf[:n]), nil
  25. }
  26. func sendUdpMsg(addr string, msg string) (res string, err error) {
  27. udpAddr, errRet := net.ResolveUDPAddr("udp", addr)
  28. if errRet != nil {
  29. err = fmt.Errorf("resolve udp addr error: %v", err)
  30. return
  31. }
  32. conn, errRet := net.DialUDP("udp", nil, udpAddr)
  33. if errRet != nil {
  34. err = fmt.Errorf("dial udp server error: %v", err)
  35. return
  36. }
  37. defer conn.Close()
  38. _, err = conn.Write([]byte(msg))
  39. if err != nil {
  40. err = fmt.Errorf("write to udp server error: %v", err)
  41. return
  42. }
  43. buf := make([]byte, 2048)
  44. n, errRet := conn.Read(buf)
  45. if errRet != nil {
  46. err = fmt.Errorf("read from udp server error: %v", err)
  47. return
  48. }
  49. return string(buf[:n]), nil
  50. }