github.com/codingeasygo/util@v0.0.0-20231206062002-1ce2f004b7d9/xdebug/echo.go (about)

     1  package xdebug
     2  
     3  import (
     4  	"io"
     5  	"net"
     6  )
     7  
     8  // EchoServer
     9  type EchoServer struct {
    10  	net.Listener
    11  	Address string
    12  }
    13  
    14  // NewEchoServer will return new EchoServer
    15  func NewEchoServer(network, address string) (server *EchoServer, err error) {
    16  	server = &EchoServer{}
    17  	server.Listener, err = net.Listen(network, address)
    18  	if err == nil {
    19  		server.Address = server.Listener.Addr().String()
    20  		go server.procAccept()
    21  	}
    22  	return
    23  }
    24  
    25  func (e *EchoServer) procAccept() {
    26  	for {
    27  		conn, err := e.Listener.Accept()
    28  		if err != nil {
    29  			break
    30  		}
    31  		go io.Copy(conn, conn)
    32  	}
    33  }