Go’s netpackage holds everything you need to work with protocols like TCP, UDP and HTTP. Therefore, Go is a sollid choice for building networking applications. l, err := net.Listen("tcp", "0.0.0.0:6379") if err != nil { fmt.Println("Failed to bind to port 6379") os.Exit(1) } Accepting TCP connections: conn, err := l.Accept() if err != nil { fmt.Println("Error accepting connection: ", err.Error()) os.Exit(1) } Data from packages the server received can be read like this: for { buf := make([]byte, 1024) _, err := conn.Read(buf) if err != nil { fmt.Println("Error reading: ", err.Error()) break } fmt.Println("Received: ", string(buf)) } Data can be send by writing to the connection: _, err = conn.Write([]byte("+PONG\r\n")) if err != nil { fmt.Println("Error writing: ", err.Error()) break }