It is really easy to write a TCP Echo server in Go.
package main import ( "io" "log" "net" ) func main() { addr := "localhost:9999" server, err := net.Listen("tcp", addr) if err != nil { log.Fatalln(err) } defer server.Close() log.Println("Server is running on:", addr) for { conn, err := server.Accept() if err != nil { log.Println("Failed to accept conn.", err) continue } go func(conn net.Conn) { defer func() { conn.Close() }() io.Copy(conn, conn) }(conn) } }
We used io.Copy
here to copy from conn as Reader to conn as Writer (conn implemented the ReadWriter interface)
Run it:
$ go run main.go
Then in another terminal, test it with telnet:
$ telnet localhost 9999 Trying ::1... telnet: connect to address ::1: Connection refused Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. hello hello can you repeat this after me? can you repeat this after me?
Top comments (0)