ืคื•ื ื“ืึทืžืขื ื˜ืึทืœืก โ€‹โ€‹ืคื•ืŸ ืคืึทืจืœืึธื–ืœืขืš ื“ืึทื˜ืึท ืึทืจื™ื‘ืขืจืคื™ืจืŸ

ืคื•ื ื“ืึทืžืขื ื˜ืึทืœืก โ€‹โ€‹ืคื•ืŸ ืคืึทืจืœืึธื–ืœืขืš ื“ืึทื˜ืึท ืึทืจื™ื‘ืขืจืคื™ืจืŸ

ืฆื• ื“ื™ ื•ื•ืืก ื–ื•ื›ื˜ ื“ืขื“ืึทืงื™ื™ื˜ืึทื“ ืฆื• ืคึฟืึทืจืฉื˜ื™ื™ืŸ ื ืขื˜ื•ื•ืึธืจืงืก ืื•ืŸ ืคึผืจืึธื˜ืึธืงืึธืœืก.

Briefly

ื“ืขืจ ืึทืจื˜ื™ืงืœ ื“ื™ืกืงืึทืกื˜ ื“ื™ ื‘ืึทืกื™ืงืก ืคื•ืŸ ืคืึทืจืœืึธื–ืœืขืš ื“ืึทื˜ืŸ ื˜ืจืึทื ืกืžื™ืกื™ืข, ื™ืžืคึผืœืึทืžืึทื ืฅ ื‘ื™ื™ืฉืคื™ืœืŸ ืื•ื™ืฃ Go, ืึทืจื™ื™ึทื ื’ืขืจืขื›ื ื˜ UDP ืื•ืŸ TCP. ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ ืฆื™ื™ึทื˜, ะดะฒะฐ, ื“ืจื™ื™ึท ืื•ืŸ ื“ื™ ื‘ื™ื›ืขืจ "ืงืึธืžืคึผื™ื•ื˜ืขืจ ื ืขื˜ื•ื•ืึธืจืงืก. ืื•ื™ื‘ืŸ-ืึทืจืึธืคึผ ืฆื•ื’ืึทื ื’", ืึทื ื“ืขืจืฉ ืึทืœืข ื“ื™ืกืงื•ื˜ื™ืจืŸ ื‘ืœื•ื™ื– ื˜ื ืขื ื‘ื•ื™ื ืื•ืŸ ืึธืœื™ืคืขืจืึธื•ื•.

ืึทืจื™ื‘ืขืจืคื™ืจืŸ ืฉื™ื›ื˜ืข ืคึผืจืึธื˜ืึธืงืึธืœ

ืคึผืจืึธื•ื•ื™ื“ืขืก ืึท ืœืึทื“ื–ืฉื™ืงืึทืœ ืงืฉืจ ืฆื•ื•ื™ืฉืŸ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืคึผืจืึทืกืขืกืึทื– ืคืœื™ืกื ื“ื™ืง ืื•ื™ืฃ ืคืึทืจืฉื™ื“ืขื ืข ืžื—ื ื•ืช. ืคึฟื•ืŸ ืึท ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืคึผืขืจืกืคึผืขืงื˜ื™ื•ื•, ืึท ืœืึทื“ื–ืฉื™ืงืึทืœ ืงืฉืจ ืงื•ืงื˜ ื•ื•ื™ ืึท ืงืึทื ืึทืœ ื•ื•ืึธืก ื’ืœื™ื™ืš ืงืึทื ืขืงืฅ ืคึผืจืึทืกืขืกืึทื–.

ืคื•ื ื“ืึทืžืขื ื˜ืึทืœืก โ€‹โ€‹ืคื•ืŸ ืคืึทืจืœืึธื–ืœืขืš ื“ืึทื˜ืึท ืึทืจื™ื‘ืขืจืคื™ืจืŸ

ืึทืจื™ื‘ืขืจืคื™ืจืŸ ืฉื™ื›ื˜ืข ืคึผืจืึธื˜ืึธืงืึธืœืก ื–ืขื ืขืŸ ื’ืขืฉื˜ื™ืฆื˜ ื“ื•ืจืš ืกื•ืฃ ืกื™ืกื˜ืขืžืขืŸ, ืึธื‘ืขืจ ื ื™ืฉื˜ ื“ื•ืจืš ื ืขืฅ ืจืึธื•ื˜ืขืจืก (ื—ื•ืฅ - ื“ืคึผื™). ืื•ื™ืฃ ื“ื™ ืกืขื ื“ืขืจ ื–ื™ื™ึทื˜, ื“ื™ ืึทืจื™ื‘ืขืจืคื™ืจืŸ ืฉื™ื›ื˜ืข ืงืึทื ื•ื•ืขืจืฅ ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืฉื™ื›ื˜ืข ื“ืึทื˜ืŸ ื•ื•ืึธืก ืขืก ื‘ืืงื•ืžื˜ ืคื•ืŸ ื“ื™ ืฉื™ืงื˜ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืคึผืจืึธืฆืขืก ืื™ืŸ ืึทืจื™ื‘ืขืจืคื™ืจืŸ ืฉื™ื›ื˜ืข ืคึผืึทืงื™ืฅ ื’ืขืจื•ืคืŸ ืกืขื’ืžืึทื ืฅ.

ืคื•ื ื“ืึทืžืขื ื˜ืึทืœืก โ€‹โ€‹ืคื•ืŸ ืคืึทืจืœืึธื–ืœืขืš ื“ืึทื˜ืึท ืึทืจื™ื‘ืขืจืคื™ืจืŸ

ื“ืขื ืื™ื– ื’ืขื˜ืืŸ ื“ื•ืจืš ืกืคึผืœื™ื˜ื™ื ื’ (ืื•ื™ื‘ ื ื™ื™ื˜ื™ืง) ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืฉื™ื›ื˜ืข ืึทืจื˜ื™ืงืœืขืŸ ืื™ืŸ ืคืจืึทื’ืžืึทื ืฅ ืื•ืŸ ืึทื“ื™ื ื’ ืึท ืึทืจื™ื‘ืขืจืคื™ืจืŸ ืฉื™ื›ื˜ืข ื›ืขื“ืขืจ ืฆื• ื™ืขื“ืขืจ ืคื•ืŸ ื–ื™ื™.

ืคื•ื ื“ืึทืžืขื ื˜ืึทืœืก โ€‹โ€‹ืคื•ืŸ ืคืึทืจืœืึธื–ืœืขืš ื“ืึทื˜ืึท ืึทืจื™ื‘ืขืจืคื™ืจืŸ

ื“ืขืจ ื˜ืจืึทื ืกืคึผืึธืจื˜ ืฉื™ื›ื˜ืข ื“ืขืžืึธืœื˜ ืคึผืึทืกื™ื– ื“ื™ ืึธืคึผืฉื ื™ื˜ ืฆื• ื“ื™ ืกืขื ื“ืขืจ ืก ื ืขืฅ ืฉื™ื›ื˜ืข, ื•ื•ื• ื“ื™ ืึธืคึผืฉื ื™ื˜ ืื™ื– ืขื ืงืึทืคึผืกืึทืœื™ื™ื˜ื™ื“ ืื™ืŸ ืึท ื ืขืฅ ืฉื™ื›ื˜ืข ืคึผืึทืงืึทื˜ (ื“ืึทื˜ืึทื’ืจืึทื) ืื•ืŸ ื’ืขืฉื™ืงื˜. ืื™ืŸ ื“ื™ ืจื™ืกื™ื•ื•ื™ื ื’ ืกื•ืฃ, ื“ื™ ื ืขืฅ ืฉื™ื›ื˜ืข ืขืงืกื˜ืจืึทืงืฅ ื“ื™ ื˜ืจืึทื ืกืคึผืึธืจื˜ ืฉื™ื›ื˜ืข ืึธืคึผืฉื ื™ื˜ ืคื•ืŸ ื“ื™ ื“ืึทื˜ืึทื’ืจืึทื ืื•ืŸ ืคึผืึทืกื™ื– ืขืก ืึทืจื•ื™ืฃ ืฆื• ื“ื™ ืึทืจื™ื‘ืขืจืคื™ืจืŸ ืฉื™ื›ื˜ืข. ื“ืขืจื ืึธืš, ื“ื™ ืึทืจื™ื‘ืขืจืคื™ืจืŸ ืฉื™ื›ื˜ืข ืคึผืจืึทืกืขืกืึทื– ื“ื™ ื‘ืืงื•ืžืขืŸ ืึธืคึผืฉื ื™ื˜ ืึทื–ื•ื™ ืึทื– ื“ื™ ื“ืึทื˜ืŸ ื–ืขื ืขืŸ ื‘ืืจืขื›ื˜ื™ื’ื˜ ืคึฟืึทืจ ื“ื™ ืจื™ืกื™ื•ื•ื™ื ื’ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ.

ืคื•ื ื“ืึทืžืขื ื˜ืึทืœืก โ€‹โ€‹ืคื•ืŸ ืคืึทืจืœืึธื–ืœืขืš ื“ืึทื˜ืึท ืึทืจื™ื‘ืขืจืคื™ืจืŸ

ืคึผืจื™ื ืกืึทืคึผืึทืœื– ืคื•ืŸ ืคืึทืจืœืึธื–ืœืขืš ื“ืึทื˜ืŸ ื˜ืจืึทื ืกืžื™ืกื™ืข

ืคืึทืจืœืึธื–ืœืขืš ื“ืึทื˜ืŸ ื˜ืจืึทื ืกืžื™ืกื™ืข ืื™ื‘ืขืจ ืึท ื’ืึธืจ ื–ื™ื›ืขืจ ืงืึทื ืึทืœ

ื“ื™ ืกื™ืžืคึผืœืึทืกื˜ ืคืึทืœ. ื“ื™ ืฉื™ืงื˜ ื–ื™ื™ื˜ ื‘ืืงื•ืžื˜ ืคืฉื•ื˜ ื“ื™ ื“ืึทื˜ืŸ ืคื•ืŸ ื“ืขืจ ืื•ื™ื‘ืขืจืฉื˜ืขืจ ืฉื™ื›ื˜ืข, ืงืจื™ื™ื™ืฅ ืึท ืคึผืึทืงืึทื˜ ืžื™ื˜ ืขืก, ืื•ืŸ ืกืขื ื“ื– ืขืก ืฆื• ื“ื™ ืงืึทื ืึทืœ.

ืกืขืจื•ื•ื™ืจืขืจ

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
)

ื“ื™ ืฉื™ืงื˜ ื–ื™ื™ึทื˜ ื“ืึทืจืฃ ืึธื ื”ื™ื™ื‘ืŸ ืึท ื˜ื™ื™ึทืžืขืจ ื™ืขื“ืขืจ ืžืึธืœ ืึท ืคึผืึทืงืึทื˜ ืื™ื– ื˜ืจืึทื ืกืžื™ื˜ื˜ืขื“ (ืกื™ื™ ื“ืขืจ ืขืจืฉื˜ืขืจ ืื•ืŸ ื“ื™ ืฆื•ื•ื™ื™ื˜ ืžืึธืœ), ืฉืขืคึผืŸ ื™ื ื˜ืขืจืึทืคึผืฉืึทื ื– ืคื•ืŸ ื“ื™ ื˜ื™ื™ึทืžืขืจ ืื•ืŸ ื”ืึทืœื˜ืŸ ืขืก.

ืึทื–ื•ื™, ืžื™ืจ ื”ืึธื‘ืŸ ื•ื•ืขืจืŸ ื‘ืึทืงืึทื ื˜ ืžื™ื˜ ื“ื™ ืฉืœื™ืกืœ ืงืึทื ืกืขืคึผืก ืคื•ืŸ ืคืึทืจืœืึธื–ืœืขืš ื“ืึทื˜ืŸ ืึทืจื™ื‘ืขืจืคื™ืจืŸ ืคึผืจืึธื˜ืึธืงืึธืœืก:

  • ื˜ืฉืขืงืกืึทืžื–;
  • ืกื™ืงื•ื•ืึทื ืก ื ื•ืžืขืจืŸ ืคื•ืŸ ืคึผืึทืงืึทื“ื–ืฉืึทื–;
  • ื˜ื™ื™ืžืขืจืก;
  • positive ืื•ืŸ ื ืขื’ืึทื˜ื™ื•ื• ืจื™ืกื™ืฅ.

ืื‘ืขืจ ืึทื– ืก ื ื™ื˜ ืึทืœืข!

ืคืึทืจืœืึธื–ืœืขืš ื“ืึทื˜ืŸ ืึทืจื™ื‘ืขืจืคื™ืจืŸ ืคึผืจืึธื˜ืึธืงืึธืœ ืžื™ื˜ ืคึผื™ื™ืคึผืœื™ื™ื ื™ื ื’

ืื™ืŸ ื“ื™ ื•ื•ืึทืจื™ืึทื ื˜ ื•ื•ืึธืก ืžื™ืจ ื”ืึธื‘ืŸ ืฉื•ื™ืŸ ื‘ืึทื˜ืจืึทื›ื˜, ื“ื™ ืคืึทืจืœืึธื–ืœืขืš ืขืงืกืคึผืจืขืก ืคึผืจืึธื˜ืึธืงืึธืœ ืื™ื– ื–ื™ื™ืขืจ ื‘ืึทื˜ืœืึธื ื™ืฉ. ืขืก ื”ื™ื™ื‘ื˜ ืฆื• "ืคึผืึทืžืขืœืขืš ืึทืจืึธืคึผ" ื“ื™ ื˜ืจืึทื ืกืžื™ืกื™ืข ืฆื•ื’ืขืฉื˜ืขืœื˜ ื“ื•ืจืš ื“ื™ ืงืึธืžื•ื ื™ืงืึทืฆื™ืข ืงืึทื ืึทืœ ื•ื•ืขืŸ ื“ื™ RTT ื™ื ืงืจื™ืกื™ื–. ืฆื• ืคืึทืจื’ืจืขืกืขืจืŸ ื–ื™ื™ึทืŸ ืขืคืขืงื˜ื™ื•ื•ืงื™ื™ึทื˜ ืื•ืŸ ื‘ืขืกืขืจ ื ื•ืฆืŸ ื“ื™ ืงืึธืžื•ื ื™ืงืึทืฆื™ืข ืงืึทื ืึทืœ ืงืึทืคึผืึทืฆื™ื˜ืขื˜, ืคึผื™ื™ืคึผืœื™ื™ืŸ ืื™ื– ื’ืขื ื™ืฆื˜.

ืคื•ื ื“ืึทืžืขื ื˜ืึทืœืก โ€‹โ€‹ืคื•ืŸ ืคืึทืจืœืึธื–ืœืขืš ื“ืึทื˜ืึท ืึทืจื™ื‘ืขืจืคื™ืจืŸ

ื“ื™ ื ื•ืฆืŸ ืคื•ืŸ ืคึผื™ื™ืคึผืœื™ื™ืŸ ืคื™ืจื˜ ืฆื•:

  • ื™ื ืงืจื™ืกื™ื ื’ ื“ื™ ืงื™ื™ื˜ ืคื•ืŸ ืกื™ืงื•ื•ืึทื ืก ื ื•ืžืขืจืŸ, ื•ื•ื™ื™ึทืœ ืึทืœืข ื’ืขืฉื™ืงื˜ ืคึผืึทืงื™ืฅ (ืึทื—ื•ืฅ ืคึฟืึทืจ ืจืขื˜ืจืึทื ืกืžื™ืฉืึทื ื–) ืžื•ื–ืŸ ื–ื™ื™ืŸ ื™ื™ื“ืขื ืึทืคื™ื™ื“ ื™ื•ื ื™ืงืœื™;
  • ื“ื™ ื ื•ื™ื˜ ืฆื• ืคืึทืจื’ืจืขืกืขืจืŸ ื‘ืึทืคืขืจื– ืื•ื™ืฃ ื“ื™ ื˜ืจืึทื ืกืžื™ื˜ื™ื ื’ ืื•ืŸ ืจื™ืกื™ื•ื•ื™ื ื’ ื–ื™ื™ื˜ืŸ.

ื“ื™ ืกื™ืงื•ื•ืึทื ืก ื ื•ืžืขืจ ืงื™ื™ื˜ ืื•ืŸ ื‘ืึทืคืขืจ ื’ืจื™ื™ืก ืจืขืงื•ื•ื™ืจืขืžืขื ืฅ ืึธืคืขื ื’ืขืŸ ืื•ื™ืฃ ื“ื™ ืึทืงืฉืึทื ื– ื“ื™ ืคึผืจืึธื˜ืึธืงืึธืœ ื ืขืžื˜ ืื™ืŸ ืขื ื˜ืคืขืจ ืฆื• ืคึผืึทืงืึทื˜ ืงืึธืจื•ืคึผืฆื™ืข, ืึธื ื•ื•ืขืจ ืื•ืŸ ืคืึทืจื”ืึทืœื˜ืŸ. ืื™ืŸ ื“ืขื ืคืึทืœ ืคื•ืŸ ืคึผื™ื™ืคึผืœื™ื™ืŸ, ืขืก ื–ืขื ืขืŸ ืฆื•ื•ื™ื™ ืžืขื˜ื”ืึธื“ืก ืคึฟืึทืจ ืงืขืจืขืงื˜ื™ื ื’ ืขืจืจืึธืจืก:

  • ืฆื•ืจื™ืงืงื•ืžืขืŸ 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

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’