echo_server.go 630 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  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 echoWorker(c net.Conn) {
  24. br := bufio.NewReader(c)
  25. for {
  26. buf, err := br.ReadString('\n')
  27. if err == io.EOF {
  28. break
  29. }
  30. if err != nil {
  31. fmt.Printf("echo server read error: %v\n", err)
  32. return
  33. }
  34. c.Write([]byte(buf + "\n"))
  35. }
  36. }