เชตเชฟเชถเซเชตเชธเชจเซ€เชฏ เชกเซ‡เชŸเชพ เชŸเซเชฐเชพเชจเซเชธเชซเชฐเชจเซ€ เชฎเซ‚เชณเชญเซ‚เชค เชฌเชพเชฌเชคเซ‹

เชตเชฟเชถเซเชตเชธเชจเซ€เชฏ เชกเซ‡เชŸเชพ เชŸเซเชฐเชพเชจเซเชธเชซเชฐเชจเซ€ เชฎเซ‚เชณเชญเซ‚เชค เชฌเชพเชฌเชคเซ‹

เชœเซ‡เช“ เชฎเชพเชŸเซ‡ เชถเซ‹เชงเซ‡ เช›เซ‡ เชจเซ‡เชŸเชตเชฐเซเช•เซเชธ เช…เชจเซ‡ เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒเซเชธเชจเซ‡ เชธเชฎเชœเชตเชพ เชฎเชพเชŸเซ‡ เชธเชฎเชฐเซเชชเชฟเชค.

เชธเช‚เช•เซเชทเชฟเชชเซเชคเชฎเชพเช‚

เชฒเซ‡เช– เชตเชฟเชถเซเชตเชธเชจเซ€เชฏ เชกเซ‡เชŸเชพ เชŸเซเชฐเชพเชจเซเชธเชฎเชฟเชถเชจเชจเซ€ เชฎเซ‚เชณเชญเซ‚เชค เชฌเชพเชฌเชคเซ‹เชจเซ€ เชšเชฐเซเชšเชพ เช•เชฐเซ‡ เช›เซ‡, เชคเซ‡เชจเชพ เชชเชฐ เช‰เชฆเชพเชนเชฐเชฃเซ‹ เชฒเชพเช—เซ เช•เชฐเซ‡ เช›เซ‡ Go, UDP เช…เชจเซ‡ TCP เชธเชนเชฟเชค. เชชเชฐ เช†เชงเชพเชฐเชฟเชค เช›เซ‡ เชตเช–เชค, ะดะฒะฐ, เชคเซเชฐเชฃ เช…เชจเซ‡ เชชเซเชธเซเชคเช•เซ‹ "เช•เชฎเซเชชเซเชฏเซเชŸเชฐ เชจเซ‡เชŸเชตเชฐเซเช•เซเชธ. เชŸเซ‹เชช-เชกเชพเช‰เชจ เชเชชเซเชฐเซ‹เชš", เช…เชจเซเชฏเชฅเชพ เชฆเชฐเซ‡เช• เชœเชฃ เชฎเชพเชคเซเชฐ เชŸเซ‡เชจเซ‡เชจเชฌเซŒเชฎ เช…เชจเซ‡ เช“เชฒเชฟเชซเซ‹เชฐเซ‹เชตเชจเซ€ เชšเชฐเซเชšเชพ เช•เชฐเซ‡ เช›เซ‡.

เชชเชฐเชฟเชตเชนเชจ เชธเซเชคเชฐ เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒ

เชตเชฟเชตเชฟเชง เชนเซ‹เชธเซเชŸ เชชเชฐ เชšเชพเชฒเชคเซ€ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเช“ เชตเชšเซเชšเซ‡ เชคเชพเชฐเซเช•เชฟเช• เชœเซ‹เชกเชพเชฃ เชชเซเชฐเชฆเชพเชจ เช•เชฐเซ‡ เช›เซ‡. เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเชพ เชชเชฐเชฟเชชเซเชฐเซ‡เช•เซเชทเซเชฏเชฎเชพเช‚, เชฒเซ‹เชœเชฟเช•เชฒ เช•เชจเซ‡เช•เซเชถเชจ เชเช• เชšเซ‡เชจเชฒ เชœเซ‡เชตเซเช‚ เชฒเชพเช—เซ‡ เช›เซ‡ เชœเซ‡ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเช“เชจเซ‡ เชธเซ€เชงเซ€ เชฐเซ€เชคเซ‡ เชœเซ‹เชกเซ‡ เช›เซ‡.

เชตเชฟเชถเซเชตเชธเชจเซ€เชฏ เชกเซ‡เชŸเชพ เชŸเซเชฐเชพเชจเซเชธเชซเชฐเชจเซ€ เชฎเซ‚เชณเชญเซ‚เชค เชฌเชพเชฌเชคเซ‹

เชชเชฐเชฟเชตเชนเชจ เชธเซเชคเชฐ เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒเซเชธ เชเชจเซเชก เชธเชฟเชธเซเชŸเชฎเซเชธ เชฆเซเชตเชพเชฐเชพ เชธเชชเซ‹เชฐเซเชŸเซ‡เชก เช›เซ‡, เชชเชฐเช‚เชคเซ เชจเซ‡เชŸเชตเชฐเซเช• เชฐเชพเช‰เชŸเชฐเซเชธ เชฆเซเชตเชพเชฐเชพ เชจเชนเซ€เช‚ (เชธเชฟเชตเชพเชฏ - DPI). เชชเซเชฐเซ‡เชทเช•เชจเซ€ เชฌเชพเชœเซเช, เชŸเซเชฐเชพเชจเซเชธเชชเซ‹เชฐเซเชŸ เชฒเซ‡เชฏเชฐ เชเชชเซเชฒเซ€เช•เซ‡เชถเชจ เชฒเซ‡เชฏเชฐ เชกเซ‡เชŸเชพเชจเซ‡ เชฎเซ‹เช•เชฒเชตเชพเชจเซ€ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเชฎเชพเช‚เชฅเซ€ เชฎเซ‡เชณเชตเซ‡เชฒเชพ เชกเซ‡เชŸเชพเชจเซ‡ เชŸเซเชฐเชพเชจเซเชธเชชเซ‹เชฐเซเชŸ เชฒเซ‡เชฏเชฐ เชชเซ‡เช•เซ‡เชŸเชฎเชพเช‚ เชฐเซ‚เชชเชพเช‚เชคเชฐเชฟเชค เช•เชฐเซ‡ เช›เซ‡ เชœเซ‡เชจเซ‡ เชธเซ‡เช—เชฎเซ‡เชจเซเชŸ เช•เชนเซ‡เชตเชพเชฏ เช›เซ‡.

เชตเชฟเชถเซเชตเชธเชจเซ€เชฏ เชกเซ‡เชŸเชพ เชŸเซเชฐเชพเชจเซเชธเชซเชฐเชจเซ€ เชฎเซ‚เชณเชญเซ‚เชค เชฌเชพเชฌเชคเซ‹

เช† เชเชชเซเชฒเซ€เช•เซ‡เชถเชจ เชฒเซ‡เชฏเชฐ เชธเช‚เชฆเซ‡เชถเชพเช“เชจเซ‡ เชŸเซเช•เชกเชพเช“เชฎเชพเช‚ เชตเชฟเชญเชพเชœเซ€เชค เช•เชฐเซ€เชจเซ‡ (เชœเซ‹ เชœเชฐเซ‚เชฐเซ€ เชนเซ‹เชฏ เชคเซ‹) เช…เชจเซ‡ เชคเซ‡ เชฆเชฐเซ‡เช•เชฎเชพเช‚ เชŸเซเชฐเชพเชจเซเชธเชชเซ‹เชฐเซเชŸ เชฒเซ‡เชฏเชฐ เชนเซ‡เชกเชฐ เช‰เชฎเซ‡เชฐเซ€เชจเซ‡ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡.

เชตเชฟเชถเซเชตเชธเชจเซ€เชฏ เชกเซ‡เชŸเชพ เชŸเซเชฐเชพเชจเซเชธเชซเชฐเชจเซ€ เชฎเซ‚เชณเชญเซ‚เชค เชฌเชพเชฌเชคเซ‹

เชŸเซเชฐเชพเชจเซเชธเชชเซ‹เชฐเซเชŸ เชฒเซ‡เชฏเชฐ เชชเช›เซ€ เชธเซ‡เช—เชฎเซ‡เชจเซเชŸเชจเซ‡ เชชเซเชฐเซ‡เชทเช•เชจเชพ เชจเซ‡เชŸเชตเชฐเซเช• เชฒเซ‡เชฏเชฐเชฎเชพเช‚ เชชเชธเชพเชฐ เช•เชฐเซ‡ เช›เซ‡, เชœเซเชฏเชพเช‚ เชธเซ‡เช—เชฎเซ‡เชจเซเชŸเชจเซ‡ เชจเซ‡เชŸเชตเชฐเซเช• เชฒเซ‡เชฏเชฐ เชชเซ‡เช•เซ‡เชŸ (เชกเซ‡เชŸเชพเช—เซเชฐเชพเชฎ)เชฎเชพเช‚ เชธเชฎเชพเชตเซ€เชจเซ‡ เชฎเซ‹เช•เชฒเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เชชเซเชฐเชพเชชเซเชคเชฟเชจเชพ เช…เช‚เชคเซ‡, เชจเซ‡เชŸเชตเชฐเซเช• เชฒเซ‡เชฏเชฐ เชกเซ‡เชŸเชพเช—เซเชฐเชพเชฎเชฎเชพเช‚เชฅเซ€ เชŸเซเชฐเชพเชจเซเชธเชชเซ‹เชฐเซเชŸ เชฒเซ‡เชฏเชฐ เชธเซ‡เช—เชฎเซ‡เชจเซเชŸเชจเซ‡ เชฌเชนเชพเชฐ เช•เชพเชขเซ‡ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เชŸเซเชฐเชพเชจเซเชธเชชเซ‹เชฐเซเชŸ เชฒเซ‡เชฏเชฐ เชธเซเชงเซ€ เชชเชนเซ‹เช‚เชšเชพเชกเซ‡ เช›เซ‡. เช†เช—เชณ, เชชเชฐเชฟเชตเชนเชจ เชธเซเชคเชฐ เชชเซเชฐเชพเชชเซเชค เชธเซ‡เช—เชฎเซ‡เชจเซเชŸ เชชเชฐ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช•เชฐเซ‡ เช›เซ‡ เชœเซ‡เชฅเซ€ เชคเซ‡เชจเซ‹ เชกเซ‡เชŸเชพ เชชเซเชฐเชพเชชเซเชค เช•เชฐเชจเชพเชฐ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซ‡ เช‰เชชเชฒเชฌเซเชง เชฅเชพเชฏ.

เชตเชฟเชถเซเชตเชธเชจเซ€เชฏ เชกเซ‡เชŸเชพ เชŸเซเชฐเชพเชจเซเชธเชซเชฐเชจเซ€ เชฎเซ‚เชณเชญเซ‚เชค เชฌเชพเชฌเชคเซ‹

เชตเชฟเชถเซเชตเชธเชจเซ€เชฏ เชกเซ‡เชŸเชพ เชŸเซเชฐเชพเชจเซเชธเชฎเชฟเชถเชจเชจเชพ เชธเชฟเชฆเซเชงเชพเช‚เชคเซ‹

เชธเช‚เชชเซ‚เชฐเซเชฃ เชธเซเชฐเช•เซเชทเชฟเชค เชšเซ‡เชจเชฒ เชชเชฐ เชตเชฟเชถเซเชตเชธเชจเซ€เชฏ เชกเซ‡เชŸเชพ เชŸเซเชฐเชพเชจเซเชธเชฎเชฟเชถเชจ

เชธเซŒเชฅเซ€ เชธเชฐเชณ เช•เซ‡เชธ. เชฎเซ‹เช•เชฒเชตเชพเชจเซ€ เชฌเชพเชœเซ เชซเช•เซเชค เช‰เชชเชฒเชพ เชธเซเชคเชฐเชฎเชพเช‚เชฅเซ€ เชกเซ‡เชŸเชพ เชฎเซ‡เชณเชตเซ‡ เช›เซ‡, เชคเซ‡เชจเซ‡ เชงเชฐเชพเชตเชคเซเช‚ เชชเซ‡เช•เซ‡เชŸ เชฌเชจเชพเชตเซ‡ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เชšเซ‡เชจเชฒ เชชเชฐ เชฎเซ‹เช•เชฒเซ‡ เช›เซ‡.

เชธเชฐเซเชตเชฐ

package main

import (
    "log"
    "net"
)

func main() {
    // IP-ะฐะดั€ะตั ัะตั€ะฒะตั€ะฐ ะธ ะฟะพั€ั‚
    serverAddr, err := net.ResolveUDPAddr("udp", "127.0.0.1:12000")
    if err != nil {
        log.Fatal(err)
    }

    // ัะพะทะดะฐะตะผ ัะพะบะตั‚ ั ะฟะพั€ั‚ะพะผ
    serverConn, err := net.ListenUDP("udp", serverAddr)
    if err != nil {
        log.Fatal(err)
    }
    // ะพั‚ะปะพะถะตะฝะฝะพะต ะทะฐะบั€ั‹ั‚ะธะต ัะพะตะดะธะฝะตะฝะธั
    defer serverConn.Close()

    // ัะพะทะดะฐะตะผ ะฑัƒั„ะตั€ ะดะปั ะดะฐะฝะฝั‹ั…
    buf := make([]byte, 1024)

    // ะถะดะตะผ ัะพะตะดะธะฝะตะฝะธะต
    for {
        // ั‡ะธั‚ะฐะตะผ ะทะฐะฟั€ะพั
        n, addr, err := serverConn.ReadFromUDP(buf)
        // ะฟะตั€ะตะดะฐะตะผ ะดะฐะฝะฝั‹ะต ะฒ ะ’ะ•ะ ะฅะะ˜ะ™ ัƒั€ะพะฒะตะฝัŒ: ะฒ ะฝะฐัˆะตะผ ัะปัƒั‡ะฐะต stdout
        println(string(buf[0:n]), " form ", addr.IP.String())
        if err != nil {
            log.Fatal(err)
        }
        // ะพั‚ะฒะตั‚ะฐ ะฝะตั‚, ั‚.ะบ. ัั‚ะพ UDP + ะฝะฐะดะตะถะฝั‹ะน ะบะฐะฝะฐะป
    }
}

เช—เซเชฐเชพเชนเช•

package main

import (
    "fmt"
    "log"
    "net"
    "time"
)

func main() {
    // IP-ะฐะดั€ะตั ัะตั€ะฒะตั€ะฐ ะธ ะฟะพั€ั‚
    serverAddr, err := net.ResolveUDPAddr("udp", "127.0.0.1:12000")
    if err != nil {
        log.Fatal(err)
    }
    // ะปะพะบะฐะปัŒะฝั‹ะน IP-ะฐะดั€ะตั ะธ ะฟะพั€ั‚
    localAddr, err := net.ResolveUDPAddr("udp", "127.0.0.1:0")
    if err != nil {
        log.Fatal(err)
    }
    // ัƒัั‚ะฐะฝะพะฒะบะฐ ัะพะตะดะธะฝะตะฝะธั
    conn, err := net.DialUDP("udp", localAddr, serverAddr)
    if err != nil {
        log.Fatal(err)
    }
    // ะพั‚ะปะพะถะตะฝะฝะพะต ะทะฐะบั€ั‹ั‚ะธะต ัะพะตะดะธะฝะตะฝะธั
    defer conn.Close()

    for {
        // ะฟะพะปัƒั‡ะตะฝะธะต ะดะฐะฝะฝั‹ั… ะพั‚ ะ’ะ•ะ ะฅะะ•ะ“ะž ัƒั€ะพะฒะฝั
        fmt.Print("ะ’ะฒะตะดะธั‚ะต ัั‚ั€ะพั‡ะฝะพะต ะฟั€ะตะดะปะพะถะตะฝะธะต > ")
        var msg string
        _, err := fmt.Scanf("%s", &msg)
        if err != nil {
            log.Fatal(err)
        }
        // ะฟะตั€ะตะดะฐะตั‚ัั ะฟะพั‚ะพะบ ะฑะฐะนั‚, ะฐ ะฝะต ัั‚ั€ะพะบะฐ
        buf := []byte(msg)
        // ะทะฐะฟะธััŒ (ะฟะตั€ะตะดะฐั‡ะฐ) ะฒ ัะพะตะดะธะฝะตะฝะธะต
        _, err = conn.Write(buf)
        if err != nil {
            log.Fatal(err)
        }
        // 1 ัะตะบัƒะฝะดะพั‡ะบัƒ
        time.Sleep(time.Second * 1)
    }
}

เชธเช‚เชญเชตเชฟเชค เชญเซ‚เชฒเซ‹ เชธเชพเชฅเซ‡ เชšเซ‡เชจเชฒ เชชเชฐ เชตเชฟเชถเซเชตเชธเชจเซ€เชฏ เชกเซ‡เชŸเชพ เชŸเซเชฐเชพเชจเซเชธเชฎเชฟเชถเชจ

เช†เช—เชณเชจเซเช‚ เชชเช—เชฒเซเช‚ เช เชงเชพเชฐเชตเซเช‚ เช›เซ‡ เช•เซ‡ เชคเชฎเชพเชฎ เชŸเซเชฐเชพเชจเซเชธเชฎเชฟเชŸเซ‡เชก เชชเซ‡เช•เซ‡เชŸเซ‹ เชœเซ‡ เช•เซเชฐเชฎเชฎเชพเช‚ เชฎเซ‹เช•เชฒเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเชพ เชนเชคเชพ เชคเซ‡ เช•เซเชฐเชฎเชฎเชพเช‚ เชชเซเชฐเชพเชชเซเชค เชฅเชฏเชพ เช›เซ‡, เชชเชฐเช‚เชคเซ เชคเซ‡เชฎเชพเช‚เชจเชพ เชฌเชฟเชŸเซเชธ เช เชนเช•เซ€เช•เชคเชจเซ‡ เช•เชพเชฐเชฃเซ‡ เชฆเซ‚เชทเชฟเชค เชฅเชˆ เชถเช•เซ‡ เช›เซ‡ เช•เซ‡ เชšเซ‡เชจเชฒ เช•เซ‡เชŸเชฒเซ€เช•เชตเชพเชฐ เชตเชฟเช•เซƒเชคเชฟเช“ เชธเชพเชฅเซ‡ เชกเซ‡เชŸเชพ เชŸเซเชฐเชพเชจเซเชธเชฎเชฟเชŸ เช•เชฐเซ‡ เช›เซ‡.

เชตเชฟเชถเซเชตเชธเชจเซ€เชฏ เชกเซ‡เชŸเชพ เชŸเซเชฐเชพเชจเซเชธเชซเชฐเชจเซ€ เชฎเซ‚เชณเชญเซ‚เชค เชฌเชพเชฌเชคเซ‹

เช† เช•เชฟเชธเซเชธเชพเชฎเชพเช‚, เชจเซ€เชšเซ‡เชจเซ€ เชชเชฆเซเชงเชคเชฟเช“เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡:

  • เชญเซ‚เชฒ เชถเซ‹เชง;
  • เชชเซเชฐเชคเชฟเชธเชพเชฆ
  • เชชเซเชจเชƒเชชเซเชฐเชธเชพเชฐเชฃ.

เชตเชฟเชถเซเชตเชธเชจเซ€เชฏ เชกเซ‡เชŸเชพ เชŸเซเชฐเชพเชจเซเชธเชซเชฐ เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒ เช•เซ‡ เชœเซ‡เช“ เชŸเซเชฐเชพเชจเซเชธเชฎเชฟเชถเชจเชจเซ‡ เช˜เชฃเซ€ เชตเช–เชค เชชเซเชจเชฐเชพเชตเชฐเซเชคเชฟเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชธเชฎเชพเชจ เชฎเชฟเช•เซ‡เชจเชฟเชเชฎ เชงเชฐเชพเชตเซ‡ เช›เซ‡ เชคเซ‡เชจเซ‡ เช“เชŸเซ‹เชฎเซ‡เชŸเชฟเช• เชฐเซ€เชชเซ€เชŸ เชฐเซ€เช•เซเชตเซ‡เชธเซเชŸ (ARQ) เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒ เช•เชนเซ‡เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡.
เชตเชงเซเชฎเชพเช‚, เชœเซเชฏเชพเชฐเซ‡ เชชเซเชฐเชพเชชเซเชค เช•เชฐเชจเชพเชฐ เชชเช•เซเชทเชจเซ‡ เช›เซ‡เชฒเซเชฒเชพ เชชเซ‡เช•เซ‡เชŸเชจเชพ เชชเซเชฐเชธเชพเชฐเชฃเชจเชพ เชชเชฐเชฟเชฃเชพเชฎเซ‹ เชตเชฟเชถเซ‡ เช•เซ‹เชˆ เชฎเชพเชนเชฟเชคเซ€ เชชเซเชฐเชพเชชเซเชค เชฅเชคเซ€ เชจเชฅเซ€ เชคเซเชฏเชพเชฐเซ‡ เชฐเชธเซ€เชฆเซ‹เชฎเชพเช‚ เชญเซ‚เชฒเซ‹เชจเซ€ เชธเช‚เชญเชพเชตเชจเชพเชจเซ‡ เชงเซเชฏเชพเชจเชฎเชพเช‚ เชฒเซ‡เชตเซ€ เชฏเซ‹เช—เซเชฏ เช›เซ‡.
เช† เชธเชฎเชธเซเชฏเชพเชจเซ‹ เช‰เช•เซ‡เชฒ, TCP เชฎเชพเช‚ เชชเชฃ เช‰เชชเชฏเซ‹เช—เชฎเชพเช‚ เชฒเซ‡เชตเชพเชฏ เช›เซ‡, เชคเซ‡ เชชเซ‡เช•เซ‡เชŸเชจเซ‹ เช•เซเชฐเชฎ เชจเช‚เชฌเชฐ เชงเชฐเชพเชตเชคเชพ เชกเซ‡เชŸเชพ เชชเซ‡เช•เซ‡เชŸเชฎเชพเช‚ เชเช• เชจเชตเซเช‚ เช•เซเชทเซ‡เชคเซเชฐ เช‰เชฎเซ‡เชฐเชตเชพเชจเซเช‚ เช›เซ‡.

เชตเชฟเชถเซเชตเชธเชจเซ€เชฏ เชกเซ‡เชŸเชพ เชŸเซเชฐเชพเชจเซเชธเชซเชฐเชจเซ€ เชฎเซ‚เชณเชญเซ‚เชค เชฌเชพเชฌเชคเซ‹

เชชเซ‡เช•เซ‡เชŸ เชตเชฟเช•เซƒเชคเชฟ เช…เชจเซ‡ เชจเซเช•เชถเชพเชจเชจเซ‡ เช†เชงเซ€เชจ เช…เชตเชฟเชถเซเชตเชธเชจเซ€เชฏ เชšเซ‡เชจเชฒ เชชเชฐ เชตเชฟเชถเซเชตเชธเชจเซ€เชฏ เชกเซ‡เชŸเชพ เชŸเซเชฐเชพเชจเซเชธเชฎเชฟเชถเชจ

เชตเชฟเช•เซƒเชคเชฟ เชธเชพเชฅเซ‡, เช•เชฎเชจเชธเซ€เชฌเซ‡, เชจเซ‡เชŸเชตเชฐเซเช•เชฎเชพเช‚ เชชเซ‡เช•เซ‡เชŸเชจเซ€ เช–เซ‹เชŸ เช›เซ‡.
เช…เชจเซ‡ เช† เชธเชฎเชธเซเชฏเชพเชจเซ‡ เชนเชฒ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชชเชฆเซเชงเชคเชฟเช“ เชœเชฐเซ‚เชฐเซ€ เช›เซ‡:

  • เชชเซ‡เช•เซ‡เชŸ เชจเซเช•เชถเชพเชจเชจเซ€ เชนเช•เซ€เช•เชค เชจเช•เซเช•เซ€ เช•เชฐเชตเซ€;
  • เชชเซเชฐเชพเชชเซเชค เช•เชฐเชจเชพเชฐ เชชเช•เซเชทเชจเซ‡ เช–เซ‹เชตเชพเชฏเซ‡เชฒเชพ เชชเซ‡เช•เซ‡เชŸเชจเซ€ เชชเซเชจเชƒ เชกเชฟเชฒเชฟเชตเชฐเซ€.

เชตเชงเซเชฎเชพเช‚, เชชเซ‡เช•เซ‡เชœเชจเซ€ เช–เซ‹เชŸ เช‰เชชเชฐเชพเช‚เชค, เชฐเชธเซ€เชฆเชจเซ€ เช–เซ‹เชŸเชจเซ€ เชถเช•เซเชฏเชคเชพ เชชเซ‚เชฐเซ€ เชชเชพเชกเชตเซ€ เชœเชฐเซ‚เชฐเซ€ เช›เซ‡ เช…เชฅเชตเชพ, เชœเซ‹ เช•เช‚เชˆ เช–เซ‹เชตเชพเชˆ เช—เชฏเซเช‚ เชจเชฅเซ€, เชคเซ‹ เชจเซ‹เช‚เชงเชชเชพเชคเซเชฐ เชตเชฟเชฒเช‚เชฌ เชธเชพเชฅเซ‡ เชคเซ‡เชจเซ€ เชกเชฟเชฒเชฟเชตเชฐเซ€. เชฌเชงเชพ เช•เชฟเชธเซเชธเชพเช“เชฎเชพเช‚, เชธเชฎเชพเชจ เชตเชธเซเชคเซ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡: เชชเซ‡เช•เซ‡เชŸ เชซเชฐเซ€เชฅเซ€ เชชเซเชฐเชธเชพเชฐเชฟเชค เชฅเชพเชฏ เช›เซ‡. เชธเชฎเชฏเชจเซ‡ เชจเชฟเชฏเช‚เชคเซเชฐเชฟเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เช† เชฎเชฟเช•เซ‡เชจเชฟเชเชฎ เช•เชพเช‰เชจเซเชŸเชกเชพเช‰เชจ เชŸเชพเชˆเชฎเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡, เชœเซ‡ เชคเชฎเชจเซ‡ เชชเซเชฐเชคเซ€เช•เซเชทเชพ เช…เช‚เชคเชฐเชพเชฒเชจเซ‹ เช…เช‚เชค เชจเช•เซเช•เซ€ เช•เชฐเชตเชพ เชฆเซ‡ เช›เซ‡. เชคเซ‡เชฅเซ€ เชชเซ‡เช•เซ‡เชœเชฎเชพเช‚ เชจเซ‡เชŸ TCPKeepAlive เชกเชฟเชซเซ‹เชฒเซเชŸ เชฐเซ‚เชชเซ‡ 15 เชธเซ‡เช•เชจเซเชก เชชเชฐ เชธเซ‡เชŸ เช›เซ‡:

// defaultTCPKeepAlive is a default constant value for TCPKeepAlive times
// See golang.org/issue/31510
const (
    defaultTCPKeepAlive = 15 * time.Second
)

เชœเซเชฏเชพเชฐเซ‡ เชชเชฃ เชชเซ‡เช•เซ‡เชŸ เชŸเซเชฐเชพเชจเซเชธเชฎเชฟเชŸ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เชคเซเชฏเชพเชฐเซ‡ เชฎเซ‹เช•เชฒเชจเชพเชฐ เชฌเชพเชœเซเช เชŸเชพเชˆเชฎเชฐ เชถเชฐเซ‚ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ (เชชเชนเซ‡เชฒเซ€ เช…เชจเซ‡ เชฌเซ€เชœเซ€ เชตเช–เชค เชฌเช‚เชจเซ‡), เชŸเชพเชˆเชฎเชฐเชฅเซ€ เช†เชตเชคเชพ เชตเชฟเช•เซเชทเซ‡เชชเซ‹เชจเซ‡ เชนเซ‡เชจเซเชกเชฒ เช•เชฐเซ‹ เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เชฌเช‚เชง เช•เชฐเซ‹.

เชคเซ‡เชฅเซ€, เช…เชฎเซ‡ เชตเชฟเชถเซเชตเชธเชจเซ€เชฏ เชกเซ‡เชŸเชพ เชŸเซเชฐเชพเชจเซเชธเชซเชฐ เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒเชจเชพ เชฎเซเช–เซเชฏ เช–เซเชฏเชพเชฒเซ‹เชฅเซ€ เชชเชฐเชฟเชšเชฟเชค เชฅเชฏเชพ เช›เซ€เช:

  • เชšเซ‡เช•เชธเชฎ
  • เชชเซ‡เช•เซ‡เชœเซ‹เชจเซ€ เช•เซเชฐเชฎ เชธเช‚เช–เซเชฏเชพ;
  • เชŸเชพเชˆเชฎเชฐ;
  • เชนเช•เชพเชฐเชพเชคเซเชฎเช• เช…เชจเซ‡ เชจเช•เชพเชฐเชพเชคเซเชฎเช• เชฐเชธเซ€เชฆเซ‹.

เชชเชฐเช‚เชคเซ เชคเซ‡ เชฌเชงเซ เชœ เชจเชฅเซ€!

เชชเชพเช‡เชชเชฒเชพเช‡เชจเชฟเช‚เช— เชธเชพเชฅเซ‡ เชตเชฟเชถเซเชตเชธเชจเซ€เชฏ เชกเซ‡เชŸเชพ เชŸเซเชฐเชพเชจเซเชธเชซเชฐ เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒ

เช…เชฎเซ‡ เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ เชงเซเชฏเชพเชจเชฎเชพเช‚ เชฒเซ€เชงเซ‡เชฒเชพ เชตเซ‡เชฐเชฟเช…เชจเซเชŸเชฎเชพเช‚, เชตเชฟเชถเซเชตเชธเชจเซ€เชฏ เชกเชฟเชฒเชฟเชตเชฐเซ€ เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒ เช–เซ‚เชฌ เชœ เชฌเชฟเชจเช•เชพเชฐเซเชฏเช•เซเชทเชฎ เช›เซ‡. RTT เชตเชงเซ‡ เชคเซ‡เชฎ เชคเซ‡ เชธเช‚เชšเชพเชฐ เชšเซ‡เชจเชฒ เชฆเซเชตเชพเชฐเชพ เชชเซเชฐเชฆเชพเชจ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡เชฒ เชŸเซเชฐเชพเชจเซเชธเชฎเชฟเชถเชจเชจเซ‡ "เชงเซ€เชฎเซ‹" เช•เชฐเชตเชพเชจเซเช‚ เชถเชฐเซ‚ เช•เชฐเซ‡ เช›เซ‡. เชคเซ‡เชจเซ€ เช•เชพเชฐเซเชฏเช•เซเชทเชฎเชคเชพ เชตเชงเชพเชฐเชตเชพ เช…เชจเซ‡ เชธเช‚เชšเชพเชฐ เชšเซ‡เชจเชฒ เช•เซเชทเชฎเชคเชพเชจเซ‹ เชตเชงเซ เชธเชพเชฐเซ€ เชฐเซ€เชคเซ‡ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชชเชพเช‡เชชเชฒเชพเช‡เชจเชฟเช‚เช—เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡.

เชตเชฟเชถเซเชตเชธเชจเซ€เชฏ เชกเซ‡เชŸเชพ เชŸเซเชฐเชพเชจเซเชธเชซเชฐเชจเซ€ เชฎเซ‚เชณเชญเซ‚เชค เชฌเชพเชฌเชคเซ‹

เชชเชพเช‡เชชเชฒเชพเช‡เชจเชฟเช‚เช—เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช† เชคเชฐเชซ เชฆเซ‹เชฐเซ€ เชœเชพเชฏ เช›เซ‡:

  • เช•เซเชฐเชฎ เชจเช‚เชฌเชฐเซ‹เชจเซ€ เชถเซเชฐเซ‡เชฃเซ€เชฎเชพเช‚ เชตเชงเชพเชฐเซ‹, เช•เชพเชฐเชฃ เช•เซ‡ เชฌเชงเชพ เชฎเซ‹เช•เชฒเซ‡เชฒเชพ เชชเซ‡เช•เซ‡เชŸเซ‹ (เชชเซเชจเชƒเชชเซเชฐเชธเชพเชฐเชฃ เชธเชฟเชตเชพเชฏ) เช…เชจเชจเซเชฏ เชฐเซ€เชคเซ‡ เช“เชณเช–เชพเชฏเซ‡เชฒเชพ เชนเซ‹เชตเชพ เชœเซ‹เชˆเช;
  • เชŸเซเชฐเชพเชจเซเชธเชฎเชฟเชŸเชฟเช‚เช— เช…เชจเซ‡ เชฐเซ€เชธเซ€เชตเชฟเช‚เช— เชฌเชพเชœเซเช“ เชชเชฐ เชฌเชซเชฐ เชตเชงเชพเชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐเชฟเชฏเชพเชค.

เช•เซเชฐเชฎ เชจเช‚เชฌเชฐ เชถเซเชฐเซ‡เชฃเซ€ เช…เชจเซ‡ เชฌเชซเชฐ เช•เชฆเชจเซ€ เชœเชฐเซ‚เชฐเชฟเชฏเชพเชคเซ‹ เชชเซ‡เช•เซ‡เชŸ เชญเซเชฐเชทเซเชŸเชพเชšเชพเชฐ, เชจเซเช•เชถเชพเชจ เช…เชจเซ‡ เชตเชฟเชฒเช‚เชฌเชจเชพ เชชเซเชฐเชคเชฟเชญเชพเชตเชฎเชพเช‚ เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒ เชฆเซเชตเชพเชฐเชพ เชฒเซ‡เชตเชพเชฎเชพเช‚ เช†เชตเชคเซ€ เช•เซเชฐเชฟเชฏเชพเช“ เชชเชฐ เช†เชงเชพเชฐ เชฐเชพเช–เซ‡ เช›เซ‡. เชชเชพเช‡เชชเชฒเชพเช‡เชจเชฟเช‚เช—เชจเชพ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚, เชญเซ‚เชฒเซ‹ เชธเซเชงเชพเชฐเชตเชพ เชฎเชพเชŸเซ‡ เชฌเซ‡ เชชเชฆเซเชงเชคเชฟเช“ เช›เซ‡:

  • N เชชเซ‡เช•เซ‡เชŸเซ‹ เชชเชพเช›เชพ เชชเชฐเชค เช•เชฐเซ‹;
  • เชชเชธเช‚เชฆเช—เซ€เชฏเซเช•เซเชค เชชเซเชจเชฐเชพเชตเชฐเซเชคเชจ.

N เชชเซ‡เช•เซ‡เชŸเซ‹ เชชเชพเช›เชพ เชœเชตเซเช‚ - เชธเซเชฒเชพเช‡เชกเชฟเช‚เช— เชตเชฟเชจเซเชกเซ‹ เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒ

เชตเชฟเชถเซเชตเชธเชจเซ€เชฏ เชกเซ‡เชŸเชพ เชŸเซเชฐเชพเชจเซเชธเชซเชฐเชจเซ€ เชฎเซ‚เชณเชญเซ‚เชค เชฌเชพเชฌเชคเซ‹

เชชเซเชฐเซ‡เชทเช•เซ‡ เชคเซเชฐเชฃ เชชเซเชฐเช•เชพเชฐเชจเซ€ เช‡เชตเซ‡เชจเซเชŸเซเชธเชจเซ‡ เชธเชฎเชฐเซเชฅเชจ เช†เชชเชตเซเช‚ เช†เชตเชถเซเชฏเช• เช›เซ‡:

  • เช‰เชšเซเชš เชธเซเชคเชฐเชจเชพ เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒ เชฆเซเชตเชพเชฐเชพ เช•เซ‰เชฒ เช•เชฐเซ‹. เชœเซเชฏเชพเชฐเซ‡ เชกเซ‡เชŸเชพ เชธเซ‡เชจเซเชกเชฟเช‚เช— เชซเช‚เช•เซเชถเชจเชจเซ‡ "เช‰เชชเชฐเชฅเซ€" เช•เชนเซ‡เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชคเซเชฏเชพเชฐเซ‡ เชฎเซ‹เช•เชฒเชตเชพเชจเซ€ เชฌเชพเชœเซ เชชเซเชฐเชฅเชฎ เชตเชฟเชจเซเชกเซ‹ เชญเชฐเชตเชพเชจเซ€ เชกเชฟเช—เซเชฐเซ€ เชคเชชเชพเชธเซ‡ เช›เซ‡ (เชเชŸเชฒเซ‡ โ€‹โ€‹โ€‹โ€‹เช•เซ‡, เชฐเชธเซ€เชฆเชจเซ€ เชชเซเชฐเชพเชชเซเชคเชฟเชจเซ€ เชฐเชพเชน เชœเซ‹เชคเชพ N เชฎเซ‹เช•เชฒเซ‡เชฒเชพ เชธเช‚เชฆเซ‡เชถเชพเช“เชจเซ€ เชนเชพเชœเชฐเซ€). เชœเซ‹ เชตเชฟเชจเซเชกเซ‹ เช–เชพเชฒเซ€ เชนเซ‹เชฏ, เชคเซ‹ เชจเชตเซเช‚ เชชเซ‡เช•เซ‡เชŸ เชœเชจเชฐเซ‡เชŸ เช…เชจเซ‡ เชŸเซเชฐเชพเชจเซเชธเชฎเชฟเชŸ เชฅเชพเชฏ เช›เซ‡ เช…เชจเซ‡ เชตเซ‡เชฐเซ€เชเชฌเชฒ เชตเซ‡เชฒเซเชฏเซ เช…เชชเชกเซ‡เชŸ เชฅเชพเชฏ เช›เซ‡. เชจเชนเชฟเช‚เชคเชฐ, เชฎเซ‹เช•เชฒเชตเชพเชจเซ€ เชฌเชพเชœเซ เช‰เชชเชฒเชพ เชธเซเชคเชฐ เชชเชฐ เชกเซ‡เชŸเชพ เชชเชฐเชค เช•เชฐเซ‡ เช›เซ‡, เช…เชจเซ‡ เช† เชเช• เช—เชฐเซเชญเชฟเชค เชธเช‚เช•เซ‡เชค เช›เซ‡ เช•เซ‡ เชตเชฟเชจเซเชกเซ‹ เชญเชฐเชพเชˆ เช—เชˆ เช›เซ‡. เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เช‰เชชเชฒเชพ เชธเซเชคเชฐ เชฅเซ‹เชกเชพ เชธเชฎเชฏ เชชเช›เซ€ เชซเชฐเซ€เชฅเซ€ เชกเซ‡เชŸเชพ เชŸเซเชฐเชพเชจเซเชธเชฎเชฟเชŸ เช•เชฐเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเชถเซ‡. เชตเชพเชธเซเชคเชตเชฟเช• เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชฎเชพเช‚, เชฎเซ‹เช•เชฒเชจเชพเชฐ เช•เชฆเชพเชš เชกเซ‡เชŸเชพเชจเซ‡ เชฌเชซเชฐ เช•เชฐเชถเซ‡ (เชคเซ‡เชจเซ‡ เชคเชฐเชค เชœ เชฎเซ‹เช•เชฒเชตเชพเชจเซ‡ เชฌเชฆเชฒเซ‡) เช…เชฅเชตเชพ เชคเซ‡เชจเซ€ เชชเชพเชธเซ‡ เชธเชฟเช‚เช•เซเชฐเซ‹เชจเชพเช‡เชเซ‡เชถเชจ เชฎเชฟเช•เซ‡เชจเชฟเชเชฎ (เชœเซ‡เชฎ เช•เซ‡ เชธเซ‡เชฎเชพเชซเซ‹เชฐ เช…เชฅเชตเชพ เชซเซเชฒเซ‡เช—) เชนเชถเซ‡ เชœเซ‡ เชตเชฟเชจเซเชกเซ‹ เช–เชพเชฒเซ€ เชนเซ‹เชฏ เชคเซเชฏเชพเชฐเซ‡ เชœ เช‰เชชเชฒเชพ เชธเซเชคเชฐเชจเซ‡ เชธเซ‡เชจเซเชก เชซเช‚เช•เซเชถเชจเชจเซ‡ เช•เซ‰เชฒ เช•เชฐเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเชถเซ‡. .
  • เชชเซเชทเซเชŸเชฟ เชฎเซ‡เชณเชตเชตเซ€. เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒเชฎเชพเช‚, เช•เซเชฐเชฎ เชจเช‚เชฌเชฐ N เชธเชพเชฅเซ‡เชจเชพ เชชเซ‡เช•เซ‡เชŸ เชฎเชพเชŸเซ‡, เชเช• เชธเชพเชฎเชพเชจเซเชฏ เชธเซเชตเซ€เช•เซƒเชคเชฟ เชœเชพเชฐเซ€ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ เชœเซ‡ เชฆเชฐเซเชถเชพเชตเซ‡ เช›เซ‡ เช•เซ‡ N เชชเชนเซ‡เชฒเชพเชจเชพ เช…เชจเซเช•เซเชฐเชฎ เชจเช‚เชฌเชฐเซ‹ เชธเชพเชฅเซ‡เชจเชพ เชคเชฎเชพเชฎ เชชเซ‡เช•เซ‡เชŸ เชธเชซเชณเชคเชพเชชเซ‚เชฐเซเชตเช• เชชเซเชฐเชพเชชเซเชค เชฅเชฏเชพ เชนเชคเชพ.
  • เชชเซเชฐเชคเซ€เช•เซเชทเชพ เช…เช‚เชคเชฐเชพเชฒ เชธเชฎเชพเชชเซเชค เชฅเชˆ เช—เชฏเซ‹ เช›เซ‡. เชชเซ‡เช•เซ‡เชŸเซ‹ เช…เชจเซ‡ เชฐเชธเซ€เชฆเซ‹เชจเชพ เชจเซเช•เชธเชพเชจ เช…เชจเซ‡ เชตเชฟเชฒเช‚เชฌเชจเซ€ เชนเช•เซ€เช•เชคเซ‹ เชจเช•เซเช•เซ€ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒ เชŸเชพเชˆเชฎเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡. เชœเซ‹ เชธเชฎเชฏเชธเชฎเชพเชชเซเชคเชฟ เช…เช‚เชคเชฐเชพเชฒ เชธเชฎเชพเชชเซเชค เชฅเชพเชฏ เช›เซ‡, เชคเซ‹ เชฎเซ‹เช•เชฒเชตเชพเชจเซ€ เชฌเชพเชœเซ เชฌเชงเชพ เชฎเซ‹เช•เชฒเซ‡เชฒเชพ เช…เชธเซเชตเซ€เช•เชพเชฐเซเชฏ เชชเซ‡เช•เซ‡เชŸเซ‹เชจเซ‡ เชซเชฐเซ€เชฅเซ€ เชฎเซ‹เช•เชฒเซ‡ เช›เซ‡.

เชชเชธเช‚เชฆเช—เซ€เชฏเซเช•เซเชค เชชเซเชจเชฐเชพเชตเชฐเซเชคเชจ

เชœเซเชฏเชพเชฐเซ‡ เชตเชฟเชจเซเชกเซ‹เชจเซเช‚ เช•เชฆ เช…เชจเซ‡ เชฅเซเชฐเซเชชเซเชŸ-เชชเซเชฐเชšเชพเชฐ เชตเชฟเชฒเช‚เชฌเชจเซเช‚ เช‰เชคเซเชชเชพเชฆเชจ เชฎเซ‹เชŸเซเช‚ เชนเซ‹เชฏ, เชคเซเชฏเชพเชฐเซ‡ เชฎเซ‹เชŸเซ€ เชธเช‚เช–เซเชฏเชพเชฎเชพเช‚ เชชเซ‡เช•เซ‡เชŸเซ‹ เชชเชพเช‡เชชเชฒเชพเช‡เชจเชฎเชพเช‚ เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡. เช†เชตเชพ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚, เชเช• เชชเซ‡เช•เซ‡เชŸเชจเซ€ เชญเซ‚เชฒเชจเซ‡ เช•เชพเชฐเชฃเซ‡ เชฎเซ‹เชŸเซ€ เชธเช‚เช–เซเชฏเชพเชฎเชพเช‚ เชชเซ‡เช•เซ‡เชŸเซ‹ เชซเชฐเซ€เชฅเซ€ เชŸเซเชฐเชพเชจเซเชธเชฎเชฟเชŸ เชฅเชˆ เชถเช•เซ‡ เช›เซ‡, เชœเซ‡เชฎเชพเช‚เชฅเซ€ เชฎเซ‹เชŸเชพ เชญเชพเช—เชจเชพ เชœเชฐเซ‚เชฐเซ€ เชจ เชนเชคเชพ.

เช‰เชฆเชพเชนเชฐเชฃ:

เชถเซเชฐเซ‡เชทเซเช  เชธเซˆเชฆเซเชงเชพเช‚เชคเชฟเช• เชตเซเชฏเชตเชนเชพเชฐเชฟเช• เช…เชฎเชฒเซ€เช•เชฐเชฃเชฎเชพเช‚ เชชเชฆเซเชงเชคเชฟเช“ เชเช•เชคเซเชฐเชฟเชค เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ เชŸเซ€เชธเซ€เชชเซ€. เช…เชจเซ‡ เชœเซ‹ เช•เซ‹เชˆ เชœเชพเชฃเซ‡ เช›เซ‡ เช•เซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชถเซเชฐเซ‡เชทเซเช  - เชธเซเชตเชพเช—เชค เช›เซ‡.

เชธเชฐเซเชตเชฐ

package main

import (
    "bufio"
    "fmt"
    "log"
    "net"
    "strings"
)

func main() {
    // ัะพะทะดะฐะตะผ ัะพะบะตั‚ ั ะฟะพั€ั‚ะพะผ 
    ln, err := net.Listen("tcp", ":8081")
    if err != nil {
        log.Fatalln(err)
    }
    // ะพะถะธะดะฐะฝะธะต ะฒั‹ะทะพะฒะฐ
    conn, _ := ln.Accept()

    for {
        // ัั‡ะธั‚ั‹ะฒะฐะฝะธะต ะดะฐะฝะฝั‹ั…
        msg, err := bufio.NewReader(conn).ReadString('n')
        if err != nil {
            log.Fatalln(err)
        }
        // ะฒั‹ะฒะพะด ัะพะพะฑั‰ะตะฝะธั ะฒ stdout
        fmt.Print("Message Received:", string(msg))
        // ะฟะตั€ะตะฒะพะด ัั‚ั€ะพะบะธ ะฒ ะฒะตั€ั…ะฝะธะน ั€ะตะณะธัั‚ั€
        newMsg := strings.ToUpper(msg)
        // ะพั‚ะฟั€ะฐะฒะบะฐ ะดะฐะฝะฝั‹ั…
        conn.Write([]byte(newMsg + "n"))
    }
}

เช—เซเชฐเชพเชนเช•

package main

import (
    "bufio"
    "fmt"
    "log"
    "net"
    "os"
)

func main() {
    // ัƒัั‚ะฐะฝะพะฒะบะฐ ัะพะตะดะธะฝะตะฝะธั
    conn, err := net.Dial("tcp", "127.0.0.1:8081")
    if err != nil {
        log.Fatalln(err)
    }

    for {
        // ัั‡ะธั‚ั‹ะฒะฐะฝะธะต ะดะฐะฝะฝั‹ั… ั stdin
        reader := bufio.NewReader(os.Stdin)
        fmt.Print("Text to send: ")
        // ะฟะพัั‚ั€ะพั‡ะฝะพ
        text, err := reader.ReadString('n')
        if err != nil {
            log.Fatalln(err)
        }
        // ะพั‚ะฟั€ะฐะฒะบะฐ
        fmt.Fprintf(conn, text+"n")
        // ะฟั€ะธะตะผ
        msg, err := bufio.NewReader(conn).ReadString('n')
        if err != nil {
            log.Fatalln(err)
        }
        // ะฒั‹ะฒะพะด ะฟะพะปัƒั‡ะตะฝะฝะพะณะพ ะพั‚ะฒะตั‚ะฐ
        fmt.Print("Msg from Server: " + msg)
    }
}

เชจเชฟเชทเซเช•เชฐเซเชท

เชตเชฟเชถเซเชตเชธเชจเซ€เชฏ เชกเซ‡เชŸเชพ เชŸเซเชฐเชพเชจเซเชธเชซเชฐ เช…เชจเซ‡ เช‰เชชเชฏเซ‹เช—เชจเซ€ เช–เชพเชคเชฐเซ€ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡เชจเซ€ เชชเชฆเซเชงเชคเชฟเช“

เชฎเชฟเช•เซ‡เชจเชฟเชเชฎ
เช…เชฐเชœเซ€, เชŸเชฟเชชเซเชชเชฃเซ€

เชธเชฐเชตเชพเชณเซ‹ เชšเซ‡เช• เช•เชฐเซ‹
เชชเซเชฐเชธเชพเชฐเชฟเชค เชชเซ‡เช•เซ‡เชŸเชฎเชพเช‚ เชฌเซ€เชŸ เชญเซ‚เชฒเซ‹ เชถเซ‹เชงเชตเชพ เชฎเชพเชŸเซ‡ เชตเชชเชฐเชพเชฏ เช›เซ‡

เชŸเชพเชˆเชฎเชฐ
เชธเชฎเชฏเชธเชฎเชพเชชเซเชคเชฟ เช…เช‚เชคเชฐเชพเชฒเชจเซ€ เช—เชฃเชคเชฐเซ€ เช•เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡ เช•เซเชฏเชพเชฐเซ‡ เชธเชฎเชพเชชเซเชค เชฅเชพเชฏ เช›เซ‡ เชคเซ‡ เชธเซ‚เชšเชตเซ‡ เช›เซ‡. เชฌเชพเชฆเชฎเชพเช‚เชจเซ‹ เช…เชฐเซเชฅ เช เช›เซ‡ เช•เซ‡ เช‰เชšเซเชš เชธเซเชคเชฐเชจเซ€ เชธเช‚เชญเชพเชตเชจเชพ เชธเชพเชฅเซ‡ เชชเซ‡เช•เซ‡เชŸ เช…เชฅเชตเชพ เชคเซ‡เชจเซ€ เชฐเชธเซ€เชฆ เชŸเซเชฐเชพเชจเซเชธเชฎเชฟเชถเชจ เชฆเชฐเชฎเชฟเชฏเชพเชจ เช–เซ‹เชตเชพเชˆ เชœเชพเชฏ เช›เซ‡. เชœเซ‹ เชชเซ‡เช•เซ‡เชŸ เชตเชฟเชฒเช‚เชฌ เชธเชพเชฅเซ‡ เชตเชฟเชคเชฐเชฟเชค เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชชเชฐเช‚เชคเซ เช—เซเชฎ เชฅเชฏเซ‡เชฒ เชจเชฅเซ€ (เชธเชฎเชฏเชธเชฎเชพเชชเซเชค เช…เช‚เชคเชฐเชพเชฒเชจเซ€ เช…เช•เชพเชณ เชธเชฎเชพเชชเซเชคเชฟ), เช…เชฅเชตเชพ เชฐเชธเซ€เชฆ เช–เซ‹เชตเชพเชˆ เชœเชพเชฏ เช›เซ‡, เชคเซ‹ เชชเซเชจเชƒเชชเซเชฐเชธเชพเชฐเชฃ เชชเซเชฐเชพเชชเซเชค เช•เชฐเชจเชพเชฐ เชฌเชพเชœเซเช เชกเซเชชเซเชฒเชฟเช•เซ‡เชŸ เชชเซ‡เช•เซ‡เชŸ เชคเชฐเชซ เชฆเซ‹เชฐเซ€ เชœเชพเชฏ เช›เซ‡.

เช…เชจเซเช•เซเชฐเชฎ เชจเช‚เชฌเชฐ
เชชเซเชฐเซ‡เชทเช•เชฅเซ€ เชชเซเชฐเชพเชชเซเชคเช•เชฐเซเชคเชพ เชธเซเชงเซ€ เชŸเซเชฐเชพเชจเซเชธเชฎเชฟเชŸ เชฅเชฏเซ‡เชฒเชพ เชกเซ‡เชŸเชพ เชชเซ‡เช•เซ‡เชŸเชจเชพ เช•เซเชฐเชฎเชฟเช• เชจเช‚เชฌเชฐเชฟเช‚เช— เชฎเชพเชŸเซ‡ เชตเชชเชฐเชพเชฏ เช›เซ‡. เชชเซเชฐเชพเชชเซเชค เชฅเชฏเซ‡เชฒ เชชเซ‡เช•เซ‡เชŸเชจเชพ เช…เชจเซเช•เซเชฐเชฎ เชจเช‚เชฌเชฐเซ‹เชฎเชพเช‚ เช—เชพเชฌเชกเชพเช“ เชฐเซ€เชธเซ€เชตเชฐเชจเซ‡ เชชเซ‡เช•เซ‡เชŸเชจเซ€ เช–เซ‹เชŸ เชถเซ‹เชงเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡. เชธเชฎเชพเชจ เชชเซ‡เช•เซ‡เชŸ เช•เซเชฐเชฎ เชจเช‚เชฌเชฐเซ‹เชจเซ‹ เช…เชฐเซเชฅ เช เช›เซ‡ เช•เซ‡ เชชเซ‡เช•เซ‡เชŸเซ‹ เชเช•เชฌเซ€เชœเชพเชจเชพ เชกเซเชชเซเชฒเชฟเช•เซ‡เชŸ เช›เซ‡

ะŸะพะดั‚ะฒะตั€ะถะดะตะฝะธะต
เชชเซเชฐเชพเชชเซเชค เช…เช‚เชค เชฆเซเชตเชพเชฐเชพ เชœเชจเชฐเซ‡เชŸ เชฅเชพเชฏ เช›เซ‡ เช…เชจเซ‡ เชฎเซ‹เช•เชฒเชตเชพเชจเชพ เช…เช‚เชคเชจเซ‡ เชธเซ‚เชšเชตเซ‡ เช›เซ‡ เช•เซ‡ เช…เชจเซเชฐเซ‚เชช เชชเซ‡เช•เซ‡เชŸ เช…เชฅเชตเชพ เชชเซ‡เช•เซ‡เชŸเซ‹เชจเซเช‚ เชœเซ‚เชฅ เชธเชซเชณเชคเชพเชชเซ‚เชฐเซเชตเช• เชชเซเชฐเชพเชชเซเชค เชฅเชฏเซเช‚ เช›เซ‡. เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เชธเซเชตเซ€เช•เซƒเชคเชฟเชฎเชพเช‚ เชธเชซเชณเชคเชพเชชเซ‚เชฐเซเชตเช• เชชเซเชฐเชพเชชเซเชค เชฅเชฏเซ‡เชฒเชพ เชชเซ‡เช•เซ‡เชŸเซ‹เชจเชพ เช•เซเชฐเชฎ เชจเช‚เชฌเชฐเซ‹ เชนเซ‹เชฏ เช›เซ‡. เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒเชจเชพ เช†เชงเชพเชฐเซ‡, เชตเซเชฏเช•เซเชคเชฟเช—เชค เช…เชจเซ‡ เชœเซ‚เชฅ เชชเซเชทเซเชŸเชฟเช•เชฐเชฃเซ‹เชจเซ‡ เช…เชฒเช— เชชเชพเชกเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡

เชจเช•เชพเชฐเชพเชคเซเชฎเช• เชชเซเชทเซเชŸเชฟ
เชชเซเชฐเซ‡เชทเช•เชจเซ‡ เชœเชพเชฃ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชชเซเชฐเชพเชชเซเชคเช•เชฐเซเชคเชพ เชฆเซเชตเชพเชฐเชพ เช‰เชชเชฏเซ‹เช—เชฎเชพเช‚ เชฒเซ‡เชตเชพเชฏ เช›เซ‡ เช•เซ‡ เชชเซ‡เช•เซ‡เชŸ เช–เซ‹เชŸเซ€ เชฐเซ€เชคเซ‡ เชชเซเชฐเชพเชชเซเชค เชฅเชฏเซเช‚ เชนเชคเซเช‚. เชจเช•เชพเชฐเชพเชคเซเชฎเช• เชธเซเชตเซ€เช•เซƒเชคเชฟเชฎเชพเช‚ เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เชชเซ‡เช•เซ‡เชŸเชจเซ‹ เช•เซเชฐเชฎ เชจเช‚เชฌเชฐ เชถเชพเชฎเซ‡เชฒ เชนเซ‹เชฏ เช›เซ‡ เชœเซ‡ เชฏเซ‹เช—เซเชฏ เชฐเซ€เชคเซ‡ เชชเซเชฐเชพเชชเซเชค เชฅเชฏเซ‹ เชจ เชนเชคเซ‹

เชตเชฟเชจเซเชกเซ‹, เช•เชจเซเชตเซ‡เชฏเชฐเชพเช‡เชเซ‡เชถเชจ
เช•เซเชฐเชฎ เชจเช‚เชฌเชฐเซ‹เชจเซ€ เชถเซเชฐเซ‡เชฃเซ€เชจเซ‡ เชฎเชฐเซเชฏเชพเชฆเชฟเชค เช•เชฐเซ‹ เชœเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เชชเซ‡เช•เซ‡เชŸเซ‹ เชŸเซเชฐเชพเชจเซเชธเชฎเชฟเชŸ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชฅเชˆ เชถเช•เซ‡ เช›เซ‡. เชธเซเชตเซ€เช•เซƒเชคเชฟเช“เชจเซ€ เชฐเชพเชน เชœเซ‹เชตเชพเชจเซ€ เชคเซเชฒเชจเชพเชฎเชพเช‚ เชฎเชฒเซเชŸเชฟเช•เชพเชธเซเชŸ เช…เชจเซ‡ เชนเซ‡เชจเซเชกเชถเซ‡เช• เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒ เชฅเซเชฐเซเชชเซเชŸเชฎเชพเช‚ เชจเซ‹เช‚เชงเชชเชพเชคเซเชฐ เชตเชงเชพเชฐเซ‹ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡. เชœเซ‡เชฎ เช†เชชเชฃเซ‡ เชœเซ‹เชˆเชถเซเช‚, เชตเชฟเชจเซเชกเซ‹เชจเซ€ เชธเชพเช‡เชเชจเซ€ เช—เชฃเชคเชฐเซ€ เชฐเชฟเชธเซ‡เชชเซเชถเชจ เช…เชจเซ‡ เชฐเชฟเชธเชฟเชตเชฟเช‚เช— เชเชจเซเชกเชจเซ€ เชฌเชซเชฐเชฟเช‚เช— เช•เซเชทเชฎเชคเชพเช“ เชคเซ‡เชฎเชœ เชจเซ‡เชŸเชตเชฐเซเช• เชฒเซ‹เชก เชฒเซ‡เชตเชฒเชจเชพ เช†เชงเชพเชฐเซ‡ เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡.

เชจเซ‡เชŸเชตเชฐเซเช•เชฟเช‚เช— เชฎเชพเชŸเซ‡ Go เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเชพ เชตเชงเซ เช‰เชฆเชพเชนเชฐเชฃเซ‹

ะ’ เชญเช‚เชกเชพเชฐ.

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹