Servidor TCP simples em Go

Escuta na porta 8081para uma conexão tcp. Depois que a conexão é estabelecida, os dados da solicitação são lidos, impressos no console e a string “Hello!” é retornado como uma resposta.

package main

import (
"net"
"fmt"
)

func handleConnection
(conn net.Conn) {
// try to read data from the connection
data
:= make([]byte, 512)
n
, err := conn.Read(data)
if err != nil { panic(err) }
s
:= string(data[:n])

// print the request data
fmt
.Println(s)

// send a response
var str = []string{"Hi there!"}
var x = []byte{}
// convert string array to byte array so it can
// be written to the connection
for i:=0; i<len(str); i++{
b
:= []byte(str[i])
for j:=0; j<len(b); j++{
x
= append(x,b[j])
}
}
// write the data to the connection
_
, err = conn.Write(x)
if err != nil { panic(err) }
// close the connection
conn
.Close()
}

func main
() {
ln
, err := net.Listen("tcp", ":8081")
if err != nil {
// handle error
}
for {
conn
, err := ln.Accept()
if err != nil {
// handle error
continue
}
go handleConnection
(conn)
}
}