เจญเจฐเฉ‹เจธเฉ‡เจฏเฉ‹เจ— เจกเฉ‡เจŸเจพ เจŸเฉเจฐเจพเจ‚เจธเจซเจฐ เจฆเฉ‡ เจฌเฉเจจเจฟเจ†เจฆเฉ€ เจคเฉฑเจค

เจญเจฐเฉ‹เจธเฉ‡เจฏเฉ‹เจ— เจกเฉ‡เจŸเจพ เจŸเฉเจฐเจพเจ‚เจธเจซเจฐ เจฆเฉ‡ เจฌเฉเจจเจฟเจ†เจฆเฉ€ เจคเฉฑเจค

เจœเจฟเจจเฉเจนเจพเจ‚ เจจเฉ‚เฉฐ เจญเจพเจฒเจฆเจพ เจนเฉˆ เจจเฉˆเจŸเจตเจฐเจ• เจ…เจคเฉ‡ เจชเฉเจฐเฉ‹เจŸเฉ‹เจ•เฉ‹เจฒ เจจเฉ‚เฉฐ เจธเจฎเจเจฃ เจฒเจˆ เจธเจฎเจฐเจชเจฟเจค.

เจธเฉฐเจ–เฉ‡เจช เจตเจฟเฉฑเจš

เจฒเฉ‡เจ– เจญเจฐเฉ‹เจธเฉ‡เจฏเฉ‹เจ— เจกเฉ‡เจŸเจพ เจŸเฉเจฐเจพเจ‚เจธเจฎเจฟเจธเจผเจจ เจฆเฉ€เจ†เจ‚ เจฎเฉ‚เจฒ เจ—เฉฑเจฒเจพเจ‚ เจฆเฉ€ เจšเจฐเจšเจพ เจ•เจฐเจฆเจพ เจนเฉˆ, เจ‰เจฆเจพเจนเจฐเจฃเจพเจ‚ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจฆเจพ เจนเฉˆ 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 เจคเฉ‹เจ‚ เจชเจนเจฟเจฒเจพเจ‚ เจตเจพเจฒเฉ‡ เจ•เฉเจฐเจฎ เจจเฉฐเจฌเจฐเจพเจ‚ เจตเจพเจฒเฉ‡ เจธเจพเจฐเฉ‡ เจชเฉˆเจ•เฉ‡เจŸ เจธเจซเจฒเจคเจพเจชเฉ‚เจฐเจตเจ• เจชเฉเจฐเจพเจชเจค เจนเฉ‹เจ เจธเจจเฅค
  • เจ‰เจกเฉ€เจ• เจ…เฉฐเจคเจฐเจพเจฒ เจฆเฉ€ เจฎเจฟเจ†เจฆ เจชเฉเฉฑเจ— เจ—เจˆ เจนเฉˆเฅค เจชเฉˆเจ•เฉ‡เจŸเจพเจ‚ เจ…เจคเฉ‡ เจฐเจธเฉ€เจฆเจพเจ‚ เจฆเฉ‡ เจจเฉเจ•เจธเจพเจจ เจ…เจคเฉ‡ เจฆเฉ‡เจฐเฉ€ เจฆเฉ‡ เจคเฉฑเจฅเจพเจ‚ เจจเฉ‚เฉฐ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เจฐเจจ เจฒเจˆ, เจชเฉเจฐเฉ‹เจŸเฉ‹เจ•เฉ‹เจฒ เจ‡เฉฑเจ• เจŸเจพเจˆเจฎเจฐ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจœเฉ‡เจ•เจฐ เจธเจฎเจพเจ‚ เจธเจฎเจพเจชเจคเฉ€ เจ…เฉฐเจคเจฐเจพเจฒ เจฆเฉ€ เจฎเจฟเจ†เจฆ เจชเฉเฉฑเจ— เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ, เจคเจพเจ‚ เจญเฉ‡เจœเจฃ เจตเจพเจฒเฉ€ เจธเจพเจˆเจก เจธเจพเจฐเฉ‡ เจญเฉ‡เจœเฉ‡ เจ—เจ เจ…เจฃเจชเจ›เจพเจคเฉ‡ เจชเฉˆเจ•เฉ‡เจŸเจพเจ‚ เจจเฉ‚เฉฐ เจฆเฉเจฌเจพเจฐเจพ เจญเฉ‡เจœเจฆเฉ€ เจนเฉˆเฅค

เจšเฉ‹เจฃเจตเฉ‡เจ‚ เจฆเฉเจนเจฐเจพเจ“

เจœเจฆเฉ‹เจ‚ เจตเจฟเฉฐเจกเฉ‹ เจฆเจพ เจ†เจ•เจพเจฐ เจ…เจคเฉ‡ เจฅเฉเจฐเฉเจชเฉเฉฑเจŸ-เจชเฉเจฐเจธเจพเจฐ เจฆเฉ‡เจฐเฉ€ เจ‰เจคเจชเจพเจฆ เจตเฉฑเจกเจพ เจนเฉเฉฐเจฆเจพ เจนเฉˆ, เจคเจพเจ‚ เจตเฉฑเจกเฉ€ เจ—เจฟเจฃเจคเฉ€ เจตเจฟเฉฑเจš เจชเฉˆเจ•เฉ‡เจŸ เจชเจพเจˆเจชเจฒเจพเจˆเจจ เจตเจฟเฉฑเจš เจนเฉ‹ เจธเจ•เจฆเฉ‡ เจนเจจเฅค เจ…เจœเจฟเจนเฉ€ เจธเจฅเจฟเจคเฉ€ เจตเจฟเฉฑเจš, เจ‡เฉฑเจ• เจธเจฟเฉฐเจ—เจฒ เจชเฉˆเจ•เฉ‡เจŸ เจฆเฉ€ เจ—เจฒเจคเฉ€ เจ•เจพเจฐเจจ เจตเฉฑเจกเฉ€ เจ—เจฟเจฃเจคเฉ€ เจตเจฟเฉฑเจš เจชเฉˆเจ•เฉ‡เจŸเจพเจ‚ เจจเฉ‚เฉฐ เจฎเฉเฉœ เจชเฉเจฐเจธเจพเจฐเจฟเจค เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ, เจœเจฟเจจเฉเจนเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจœเจผเจฟเจ†เจฆเจพเจคเจฐ เจฆเฉ€ เจฒเฉ‹เฉœ เจจเจนเฉ€เจ‚ เจธเฉ€เฅค

เจ‰เจฆเจพเจนเจฐเจจ:

เจธเจญ เจคเฉ‹เจ‚ เจตเจงเฉ€เจ† เจธเจฟเจงเจพเจ‚เจคเจ• เจ…เจญเจฟเจ†เจธเจพเจ‚ เจจเฉ‚เฉฐ เจ…เจฎเจฒเฉ€ เจ…เจฎเจฒ เจตเจฟเฉฑเจš เจ‡เจ•เฉฑเจ เจพ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ TCP. เจ…เจคเฉ‡ เจœเฉ‡ เจ•เฉ‹เจˆ เจœเจพเจฃเจฆเจพ เจนเฉˆ เจ•เจฟ เจธเจญ เจคเฉ‹เจ‚ เจตเจงเฉ€เจ† - เจธเจตเจพเจ—เจค.

เจธเจฐเจตเจฐ

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)
    }
}

เจธเจฟเฉฑเจŸเจพ

เจญเจฐเฉ‹เจธเฉ‡เจฏเฉ‹เจ— เจกเฉ‡เจŸเจพ เจŸเฉเจฐเจพเจ‚เจธเจซเจฐ เจ…เจคเฉ‡ เจตเจฐเจคเฉ‹เจ‚ เจจเฉ‚เฉฐ เจฏเจ•เฉ€เจจเฉ€ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ เจตเจฟเจงเฉ€

เจฎเจ•เฉˆเจจเจฟเจœเจฎ
เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ, เจŸเจฟเฉฑเจชเจฃเฉ€

เจฐเจ•เจฎ เจฆเฉ€ เจœเจพเจ‚เจš เจ•เจฐเฉ‹
เจ‡เฉฑเจ• เจชเฉเจฐเจธเจพเจฐเจฟเจค เจชเฉˆเจ•เฉ‡เจŸ เจตเจฟเฉฑเจš เจฌเจฟเฉฑเจŸ เจ—เจฒเจคเฉ€เจ†เจ‚ เจฆเจพ เจชเจคเจพ เจฒเจ—เจพเจ‰เจฃ เจฒเจˆ เจตเจฐเจคเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ

เจŸเจพเจˆเจฎเจฐ
เจธเจฎเจพเจ‚ เจธเจฎเจพเจชเจคเฉ€ เจ…เฉฐเจคเจฐเจพเจฒ เจจเฉ‚เฉฐ เจ—เจฟเจฃเจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจ‡เจน เจฆเจฐเจธเจพเจ‰เจ‚เจฆเจพ เจนเฉˆ เจ•เจฟ เจ‡เจน เจ•เจฆเฉ‹เจ‚ เจ–เจคเจฎ เจนเฉ‹ เจ—เจฟเจ† เจนเฉˆเฅค เจฌเจพเจ…เจฆ เจฆเจพ เจฎเจคเจฒเจฌ เจนเฉˆ เจ•เจฟ เจ‰เฉฑเจš เจชเฉฑเจงเจฐเฉ€ เจธเฉฐเจญเจพเจตเจจเจพ เจฆเฉ‡ เจจเจพเจฒ เจชเฉˆเจ•เฉ‡เจŸ เจœเจพเจ‚ เจ‡เจธเจฆเฉ€ เจฐเจธเฉ€เจฆ เจชเฉเจฐเจธเจพเจฐเจฃ เจฆเฉŒเจฐเจพเจจ เจ—เฉเฉฐเจฎ เจนเฉ‹ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆเฅค เจœเฉ‡ เจ‡เฉฑเจ• เจชเฉˆเจ•เฉ‡เจŸ เจ‡เฉฑเจ• เจฆเฉ‡เจฐเฉ€ เจจเจพเจฒ เจกเจฟเจฒเฉ€เจตเจฐ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจชเจฐ เจ—เฉเฉฐเจฎ เจจเจนเฉ€เจ‚ เจนเฉเฉฐเจฆเจพ (เจธเจฎเจพเจ‚ เจธเจฎเจพเจชเจคเฉ€ เจ…เฉฐเจคเจฐเจพเจฒ เจฆเฉ€ เจธเจฎเฉ‡เจ‚ เจคเฉ‹เจ‚ เจชเจนเจฟเจฒเจพเจ‚ เจธเจฎเจพเจชเจคเฉ€), เจœเจพเจ‚ เจ‡เฉฑเจ• เจฐเจธเฉ€เจฆ เจ—เฉเฉฐเจฎ เจนเฉ‹ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ, เจคเจพเจ‚ เจฎเฉเฉœ เจชเฉเจฐเจธเจพเจฐเจฃ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจ เจตเจพเจฒเฉ‡ เจชเจพเจธเฉ‡ เจ‡เฉฑเจ• เจกเฉเจชเจฒเฉ€เจ•เฉ‡เจŸ เจชเฉˆเจ•เฉ‡เจŸ เจตเฉฑเจฒ เจฒเฉˆ เจœเจพเจ‚เจฆเจพ เจนเฉˆ

เจ•เฉเจฐเจฎ เจธเฉฐเจ–เจฟเจ†
เจญเฉ‡เจœเจฃ เจตเจพเจฒเฉ‡ เจคเฉ‹เจ‚ เจชเฉเจฐเจพเจชเจคเจ•เจฐเจคเจพ เจคเฉฑเจ• เจชเฉเจฐเจธเจพเจฐเจฟเจค เจกเฉ‡เจŸเจพ เจชเฉˆเจ•เฉ‡เจŸเจพเจ‚ เจฆเฉ€ เจ•เฉเจฐเจฎเจตเจพเจฐ เจธเฉฐเจ–เจฟเจ† เจฒเจˆ เจตเจฐเจคเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค เจชเฉเจฐเจพเจชเจค เจ•เฉ€เจคเฉ‡ เจชเฉˆเจ•เฉ‡เจŸเจพเจ‚ เจฆเฉ‡ เจ•เฉเจฐเจฎ เจจเฉฐเจฌเจฐเจพเจ‚ เจตเจฟเฉฑเจš เจ…เฉฐเจคเจฐ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจ เจตเจพเจฒเฉ‡ เจจเฉ‚เฉฐ เจชเฉˆเจ•เฉ‡เจŸ เจฆเฉ‡ เจจเฉเจ•เจธเจพเจจ เจฆเจพ เจชเจคเจพ เจฒเจ—เจพเจ‰เจฃ เจฆเฉ€ เจ†เจ—เจฟเจ† เจฆเจฟเฉฐเจฆเฉ‡ เจนเจจเฅค เจ‡เฉฑเจ•เฉ‹ เจชเฉˆเจ•เฉ‡เจŸ เจ•เฉเจฐเจฎ เจจเฉฐเจฌเจฐเจพเจ‚ เจฆเจพ เจฎเจคเจฒเจฌ เจนเฉˆ เจ•เจฟ เจชเฉˆเจ•เฉ‡เจŸ เจ‡เฉฑเจ• เจฆเฉ‚เจœเฉ‡ เจฆเฉ‡ เจกเฉเจชเจฒเฉ€เจ•เฉ‡เจŸ เจนเจจ

เจชเฉเจธเจผเจŸเฉ€
เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจ เจตเจพเจฒเฉ‡ เจธเจฟเจฐเฉ‡ เจฆเฉเจ†เจฐเจพ เจคเจฟเจ†เจฐ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ เจ…เจคเฉ‡ เจญเฉ‡เจœเจฃ เจตเจพเจฒเฉ‡ เจ…เฉฐเจค เจจเฉ‚เฉฐ เจฆเจฐเจธเจพเจ‰เจ‚เจฆเจพ เจนเฉˆ เจ•เจฟ เจธเฉฐเจฌเฉฐเจงเจฟเจค เจชเฉˆเจ•เฉ‡เจŸ เจœเจพเจ‚ เจชเฉˆเจ•เจŸเจพเจ‚ เจฆเจพ เจธเจฎเฉ‚เจน เจธเจซเจฒเจคเจพเจชเฉ‚เจฐเจตเจ• เจชเฉเจฐเจพเจชเจค เจนเฉ‹ เจ—เจฟเจ† เจนเฉˆเฅค เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡ เจฐเจธเฉ€เจฆ เจตเจฟเฉฑเจš เจธเจซเจฒเจคเจพเจชเฉ‚เจฐเจตเจ• เจชเฉเจฐเจพเจชเจค เจนเฉ‹เจ เจชเฉˆเจ•เฉ‡เจŸเจพเจ‚ เจฆเฉ‡ เจ•เฉเจฐเจฎ เจจเฉฐเจฌเจฐ เจธเจผเจพเจฎเจฒ เจนเฉเฉฐเจฆเฉ‡ เจนเจจเฅค เจชเฉเจฐเฉ‹เจŸเฉ‹เจ•เฉ‹เจฒ 'เจคเฉ‡ เจจเจฟเจฐเจญเจฐ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ, เจตเจฟเจ…เจ•เจคเฉ€เจ—เจค เจ…เจคเฉ‡ เจธเจฎเฉ‚เจน เจชเฉเจธเจผเจŸเฉ€เจ•เจฐเจจเจพเจ‚ เจจเฉ‚เฉฐ เจตเฉฑเจ– เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ

เจจเจ•เจพเจฐเจพเจคเจฎเจ• เจชเฉเจธเจผเจŸเฉ€
เจชเฉเจฐเจพเจชเจคเจ•เจฐเจคเจพ เจฆเฉเจ†เจฐเจพ เจญเฉ‡เจœเจฃ เจตเจพเจฒเฉ‡ เจจเฉ‚เฉฐ เจธเฉ‚เจšเจฟเจค เจ•เจฐเจจ เจฒเจˆ เจตเจฐเจคเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ เจ•เจฟ เจชเฉˆเจ•เฉ‡เจŸ เจ—เจฒเจค เจขเฉฐเจ— เจจเจพเจฒ เจชเฉเจฐเจพเจชเจค เจนเฉ‹เจ‡เจ† เจธเฉ€เฅค เจ‡เฉฑเจ• เจจเจ•เจพเจฐเจพเจคเจฎเจ• เจฐเจธเฉ€เจฆ เจตเจฟเฉฑเจš เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡ เจชเฉˆเจ•เฉ‡เจŸ เจฆเจพ เจ•เฉเจฐเจฎ เจจเฉฐเจฌเจฐ เจธเจผเจพเจฎเจฒ เจนเฉเฉฐเจฆเจพ เจนเฉˆ เจœเฉ‹ เจธเจนเฉ€ เจขเฉฐเจ— เจจเจพเจฒ เจชเฉเจฐเจพเจชเจค เจจเจนเฉ€เจ‚ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจธเฉ€

เจตเจฟเฉฐเจกเฉ‹, เจ•เจจเจตเฉ‡เจ…เจฐเจพเจˆเจœเจผเฉ‡เจธเจผเจจ
เจ•เฉเจฐเจฎ เจจเฉฐเจฌเจฐเจพเจ‚ เจฆเฉ€ เจฐเฉ‡เจ‚เจœ เจจเฉ‚เฉฐ เจธเฉ€เจฎเจค เจ•เจฐเฉ‹ เจœเฉ‹ เจชเฉˆเจ•เฉ‡เจŸเจพเจ‚ เจจเฉ‚เฉฐ เจชเฉเจฐเจธเจพเจฐเจฟเจค เจ•เจฐเจจ เจฒเจˆ เจตเจฐเจคเฉ‡ เจœเจพ เจธเจ•เจฆเฉ‡ เจนเจจเฅค เจฎเจฒเจŸเฉ€เจ•เจพเจธเจŸ เจ…เจคเฉ‡ เจนเฉˆเจ‚เจกเจธเจผเฉ‡เจ• เจฎเจพเจจเจคเจพเจตเจพเจ‚ เจฆเฉ€ เจ‰เจกเฉ€เจ• เจ•เจฐเจจ เจฆเฉ‡ เจฎเฉเจ•เจพเจฌเจฒเฉ‡ เจชเฉเจฐเฉ‹เจŸเฉ‹เจ•เฉ‹เจฒ เจฅเฉเจฐเฉเจชเฉเฉฑเจŸ เจจเฉ‚เฉฐ เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ เจคเฉŒเจฐ 'เจคเฉ‡ เจตเจงเจพ เจธเจ•เจฆเฉ‡ เจนเจจเฅค เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจ…เจธเฉ€เจ‚ เจฆเฉ‡เจ–เจพเจ‚เจ—เฉ‡, เจตเจฟเฉฐเจกเฉ‹ เจฆเฉ‡ เจ†เจ•เจพเจฐ เจฆเฉ€ เจ—เจฃเจจเจพ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจ เจตเจพเจฒเฉ‡ เจธเจฟเจฐเฉ‡ เจฆเฉ€ เจฐเจฟเจธเฉˆเจชเจธเจผเจจ เจ…เจคเฉ‡ เจฌเจซเจฐเจฟเฉฐเจ— เจธเจฎเจฐเฉฑเจฅเจพเจตเจพเจ‚ เจฆเฉ‡ เจจเจพเจฒ-เจจเจพเจฒ เจจเฉˆเฉฑเจŸเจตเจฐเจ• เจฒเฉ‹เจก เจชเฉฑเจงเจฐ เจฆเฉ‡ เจ†เจงเจพเจฐ 'เจคเฉ‡ เจ•เฉ€เจคเฉ€ เจœเจพ เจธเจ•เจฆเฉ€ เจนเฉˆเฅค

เจจเฉˆเฉฑเจŸเจตเจฐเจ•เจฟเฉฐเจ— เจฒเจˆ เจ—เฉ‹ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฆเฉ€เจ†เจ‚ เจนเฉ‹เจฐ เจ‰เจฆเจพเจนเจฐเจฃเจพเจ‚

ะ’ เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€เจ†เจ‚.

เจธเจฐเฉ‹เจค: www.habr.com

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹