func main() {
// Слушает входящие сообщения
l, err := net.Listen(CONN_TYPE, CONN_HOST+":"+CONN_PORT)
if err != nil {
fmt.Println("Error listening:", err.Error())
os.Exit(1)
}
// Закрывает Listener когда приложение закрывается
defer l.Close()
fmt.Println("Listening on " + CONN_HOST + ":" + CONN_PORT)
for {
// Прослушивает входящие сообщения
conn, err := l.Accept()
if err != nil {
fmt.Println("Error accepting: ", err.Error())
os.Exit(1)
}
// Обрабатывает содинения в новом goroutine
go handleRequest(conn)
}
}
// Обрабатывает входящие соединения
func handleRequest(conn net.Conn) {
// Создаем буфер для хранения входящих данных
buf := make([]byte, 1024)
// Считывает входящие сообщения в буфер
reqLen, err := conn.Read(buf)
if err != nil {
fmt.Println("Error reading:", err.Error())
}
fmt.Println(reqLen)
// Отправляем ответ обратно
conn.Write([]byte("Message received."))
// Закрываем соединение когда обработали запрос
conn.Close()
}
func handleRequest(conn net.Conn) {
defer conn.Close()
buf := make([]byte, 1024)
b := bufio.NewReader(conn)
for {
line, err := b.ReadBytes('\n')
if err != nil { // for example EOF
break
}
buf = append(buf, line...)
}
fmt.Print(string(buf))
}
func handleRequest(conn net.Conn) {
message := make([]byte, 1024)
_, error := conn.Read(message)
if error != nil {
fmt.Println(error)
os.Exit(1)
}
fmt.Println(string(message))
conn.Close()
}