| // Echosvr is a simple TCP echo server |
| // |
| // It prints its listen address on stdout |
| // 127.0.0.1:xxxxx |
| // A test should wait for this line, parse it |
| // and may then attempt to connect. |
| package main |
| |
| import ( |
| "fmt" |
| "net" |
| ) |
| |
| func main() { |
| listener, err := net.Listen("tcp", ":") |
| if err != nil { |
| panic(err) |
| } |
| _, port, err := net.SplitHostPort(listener.Addr().String()) |
| if err != nil { |
| panic(err) |
| } |
| fmt.Printf("127.0.0.1:%s\n", port) |
| for { |
| conn, err := listener.Accept() |
| if err != nil { |
| panic(err) |
| } |
| go handleConnection(conn) |
| } |
| } |
| |
| func handleConnection(conn net.Conn) { |
| buf := make([]byte, 512) |
| nBytesRead, _ := conn.Read(buf) |
| conn.Write(buf[0:nBytesRead]) |
| conn.Close() |
| } |