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)