1
0

echo_server.go 934 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. package tests
  2. import (
  3. "bufio"
  4. "fmt"
  5. "io"
  6. "github.com/fatedier/frp/utils/net"
  7. )
  8. func StartEchoServer() {
  9. l, err := net.ListenTcp("127.0.0.1", 10701)
  10. if err != nil {
  11. fmt.Printf("echo server listen error: %v\n", err)
  12. return
  13. }
  14. for {
  15. c, err := l.Accept()
  16. if err != nil {
  17. fmt.Printf("echo server accept error: %v\n", err)
  18. return
  19. }
  20. go echoWorker(c)
  21. }
  22. }
  23. func StartUdpEchoServer() {
  24. l, err := net.ListenUDP("127.0.0.1", 10703)
  25. if err != nil {
  26. fmt.Printf("udp echo server listen error: %v\n", err)
  27. return
  28. }
  29. for {
  30. c, err := l.Accept()
  31. if err != nil {
  32. fmt.Printf("udp echo server accept error: %v\n", err)
  33. return
  34. }
  35. go echoWorker(c)
  36. }
  37. }
  38. func echoWorker(c net.Conn) {
  39. br := bufio.NewReader(c)
  40. for {
  41. buf, err := br.ReadString('\n')
  42. if err == io.EOF {
  43. break
  44. }
  45. if err != nil {
  46. fmt.Printf("echo server read error: %v\n", err)
  47. return
  48. }
  49. c.Write([]byte(buf + "\n"))
  50. }
  51. }