42 lines
800 B
Go
Executable File
42 lines
800 B
Go
Executable File
package main
|
|
|
|
import (
|
|
"bufio"
|
|
"fmt"
|
|
"net"
|
|
"runtime"
|
|
)
|
|
|
|
func Echo(c net.Conn) {
|
|
defer c.Close()
|
|
for {
|
|
line, err := bufio.NewReader(c).ReadString('\n')
|
|
if err != nil {
|
|
//fmt.Printf("Failure to read:%s\n", err.Error())
|
|
return
|
|
}
|
|
_, err = c.Write([]byte(line))
|
|
if err != nil {
|
|
//fmt.Printf("Failure to write: %s\n", err.Error())
|
|
return
|
|
}
|
|
}
|
|
}
|
|
|
|
func main() {
|
|
|
|
runtime.GOMAXPROCS(runtime.NumCPU() - 1)
|
|
|
|
fmt.Printf("Server is ready...\n")
|
|
l, err := net.Listen("tcp", ":8053")
|
|
if err != nil {
|
|
fmt.Printf("Failure to listen: %s\n", err.Error())
|
|
}
|
|
|
|
for {
|
|
if c, err := l.Accept(); err == nil {
|
|
go Echo(c) //new thread
|
|
}
|
|
}
|
|
}
|