Код IT
← Каталог

TCP и UDP в Go — TCP-сервер (echo)

Фрагмент из «TCP и UDP в Go»: TCP-сервер (echo).

Go main.go
func main() {
    ln, err := net.Listen("tcp", ":9000")
    if err != nil {
        log.Fatal(err)
    }
    defer ln.Close()

    for {
        conn, err := ln.Accept()
        if err != nil {
            log.Print(err)
            continue
        }
        go handleConn(conn) // одна горутина на соединение
    }
}

func handleConn(c net.Conn) {
    defer c.Close()
    io.Copy(c, c) // эхо: всё прочитанное — обратно клиенту
}
func main() {
    ln, err := net.Listen("tcp", ":9000")
    if err != nil {
        log.Fatal(err)
    }
    defer ln.Close()

    for {
        conn, err := ln.Accept()
        if err != nil {
            log.Print(err)
            continue
        }
        go handleConn(conn) // одна горутина на соединение
    }
}

func handleConn(c net.Conn) {
    defer c.Close()
    io.Copy(c, c) // эхо: всё прочитанное — обратно клиенту
}