Привет. Разбираюсь я с написанием tcp демонов. Вот с помощью доков сделал простенький код
package main
import (
"fmt"
"log"
"net"
)
func main() {
l, err := net.Listen("tcp", ":2000")
if err != nil {
log.Fatal(err)
}
defer l.Close()
for {
conn, err := l.Accept()
if err != nil {
log.Fatal(err)
}
go func(c net.Conn) {
buf := make([]byte, 1024)
c.Read(buf)
fmt.Print(string(buf))
c.Close()
}(conn)
}
}
Здесь после каждого сообщения соединение закрывается. Я в инетах так и не нашел объяснения о том как закрыть соединение не сразу, а через некоторый промежуток времени. (к примеру не приходили данный 20сек то закрываем соединение).
Решено
buf := make([]byte, 1024)
for {
c.Read(buf)
fmt.Print(string(buf))
}
Я могу убрать закрытие соединения. Но не могу понять, а как постоянно ждать новые сообщения? А то после первого смс следующие в терминал не попадают.
Зарание спасибо.