package main import ( "net" "log" "os" "fmt" ) const( CONN_HOST = "localhost" CONN_PORT = "3333" CONN_TYPE = "tcp" ) func main() { // start a new listener l, err := net.Listen(CONN_TYPE, CONN_HOST + ":" + CONN_PORT) if err != nil { log.Printf("Error listening: %v", err) os.Exit(1) } // close the listener when done defer l.Close() for { // accept a connection conn, err := l.Accept() if err != nil { log.Printf("Error accepting: %v", err) os.Exit(1) } // handle the connection in a new go thread go handlerequest(conn) } } func handlerequest(conn net.Conn) { // creat a buffer storing the incomming data buf := make([]byte, 1000) // read from the connection into the buffer reqLen, err := conn.Read(buf) if err != nil { log.Printf("Error reading: %v", err) os.Exit(1) } // write back how many bytes were sent conn.Write([]byte(fmt.Sprintf("Read %d bytes", reqLen))) conn.Close() }