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 }