เชเซเช เชฎเชพเชเซ
เชธเชเชเซเชทเชฟเชชเซเชคเชฎเชพเช
เชฒเซเช เชตเชฟเชถเซเชตเชธเชจเซเชฏ เชกเซเชเชพ เชเซเชฐเชพเชจเซเชธเชฎเชฟเชถเชจเชจเซ เชฎเซเชณเชญเซเชค เชฌเชพเชฌเชคเซเชจเซ เชเชฐเซเชเชพ เชเชฐเซ เชเซ, เชคเซเชจเชพ เชชเชฐ เชเชฆเชพเชนเชฐเชฃเซ เชฒเชพเชเซ เชเชฐเซ เชเซ
เชชเชฐเชฟเชตเชนเชจ เชธเซเชคเชฐ เชชเซเชฐเซเชเซเชเซเชฒ
เชตเชฟเชตเชฟเชง เชนเซเชธเซเช เชชเชฐ เชเชพเชฒเชคเซ เชเชชเซเชฒเชฟเชเซเชถเชจ เชชเซเชฐเชเซเชฐเชฟเชฏเชพเช เชตเชเซเชเซ เชคเชพเชฐเซเชเชฟเช เชเซเชกเชพเชฃ เชชเซเชฐเชฆเชพเชจ เชเชฐเซ เชเซ. เชเชชเซเชฒเชฟเชเซเชถเชจเชจเชพ เชชเชฐเชฟเชชเซเชฐเซเชเซเชทเซเชฏเชฎเชพเช, เชฒเซเชเชฟเชเชฒ เชเชจเซเชเซเชถเชจ เชเช เชเซเชจเชฒ เชเซเชตเซเช เชฒเชพเชเซ เชเซ เชเซ เชชเซเชฐเชเซเชฐเชฟเชฏเชพเชเชจเซ เชธเซเชงเซ เชฐเซเชคเซ เชเซเชกเซ เชเซ.
เช เชเชชเซเชฒเซเชเซเชถเชจ เชฒเซเชฏเชฐ เชธเชเชฆเซเชถเชพเชเชจเซ เชเซเชเชกเชพเชเชฎเชพเช เชตเชฟเชญเชพเชเซเชค เชเชฐเซเชจเซ (เชเซ เชเชฐเซเชฐเซ เชนเซเชฏ เชคเซ) เช เชจเซ เชคเซ เชฆเชฐเซเชเชฎเชพเช เชเซเชฐเชพเชจเซเชธเชชเซเชฐเซเช เชฒเซเชฏเชฐ เชนเซเชกเชฐ เชเชฎเซเชฐเซเชจเซ เชเชฐเชตเชพเชฎเชพเช เชเชตเซ เชเซ.
เชเซเชฐเชพเชจเซเชธเชชเซเชฐเซเช เชฒเซเชฏเชฐ เชชเชเซ เชธเซเชเชฎเซเชจเซเชเชจเซ เชชเซเชฐเซเชทเชเชจเชพ เชจเซเชเชตเชฐเซเช เชฒเซเชฏเชฐเชฎเชพเช เชชเชธเชพเชฐ เชเชฐเซ เชเซ, เชเซเชฏเชพเช เชธเซเชเชฎเซเชจเซเชเชจเซ เชจเซเชเชตเชฐเซเช เชฒเซเชฏเชฐ เชชเซเชเซเช (เชกเซเชเชพเชเซเชฐเชพเชฎ)เชฎเชพเช เชธเชฎเชพเชตเซเชจเซ เชฎเซเชเชฒเชตเชพเชฎเชพเช เชเชตเซ เชเซ. เชชเซเชฐเชพเชชเซเชคเชฟเชจเชพ เช เชเชคเซ, เชจเซเชเชตเชฐเซเช เชฒเซเชฏเชฐ เชกเซเชเชพเชเซเชฐเชพเชฎเชฎเชพเชเชฅเซ เชเซเชฐเชพเชจเซเชธเชชเซเชฐเซเช เชฒเซเชฏเชฐ เชธเซเชเชฎเซเชจเซเชเชจเซ เชฌเชนเชพเชฐ เชเชพเชขเซ เชเซ เช เชจเซ เชคเซเชจเซ เชเซเชฐเชพเชจเซเชธเชชเซเชฐเซเช เชฒเซเชฏเชฐ เชธเซเชงเซ เชชเชนเซเชเชเชพเชกเซ เชเซ. เชเชเชณ, เชชเชฐเชฟเชตเชนเชจ เชธเซเชคเชฐ เชชเซเชฐเชพเชชเซเชค เชธเซเชเชฎเซเชจเซเช เชชเชฐ เชชเซเชฐเชเซเชฐเชฟเชฏเชพ เชเชฐเซ เชเซ เชเซเชฅเซ เชคเซเชจเซ เชกเซเชเชพ เชชเซเชฐเชพเชชเซเชค เชเชฐเชจเชพเชฐ เชเชชเซเชฒเชฟเชเซเชถเชจเชจเซ เชเชชเชฒเชฌเซเชง เชฅเชพเชฏ.
เชตเชฟเชถเซเชตเชธเชจเซเชฏ เชกเซเชเชพ เชเซเชฐเชพเชจเซเชธเชฎเชฟเชถเชจเชจเชพ เชธเชฟเชฆเซเชงเชพเชเชคเซ
เชธเชเชชเซเชฐเซเชฃ เชธเซเชฐเชเซเชทเชฟเชค เชเซเชจเชฒ เชชเชฐ เชตเชฟเชถเซเชตเชธเชจเซเชฏ เชกเซเชเชพ เชเซเชฐเชพเชจเซเชธเชฎเชฟเชถเชจ
เชธเซเชฅเซ เชธเชฐเชณ เชเซเชธ. เชฎเซเชเชฒเชตเชพเชจเซ เชฌเชพเชเซ เชซเชเซเชค เชเชชเชฒเชพ เชธเซเชคเชฐเชฎเชพเชเชฅเซ เชกเซเชเชพ เชฎเซเชณเชตเซ เชเซ, เชคเซเชจเซ เชงเชฐเชพเชตเชคเซเช เชชเซเชเซเช เชฌเชจเชพเชตเซ เชเซ เช เชจเซ เชคเซเชจเซ เชเซเชจเชฒ เชชเชฐ เชฎเซเชเชฒเซ เชเซ.
เชธเชฐเซเชตเชฐ
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 เชฎเชพเช เชชเชฃ เชเชชเชฏเซเชเชฎเชพเช เชฒเซเชตเชพเชฏ เชเซ, เชคเซ เชชเซเชเซเชเชจเซ เชเซเชฐเชฎ เชจเชเชฌเชฐ เชงเชฐเชพเชตเชคเชพ เชกเซเชเชพ เชชเซเชเซเชเชฎเชพเช เชเช เชจเชตเซเช เชเซเชทเซเชคเซเชฐ เชเชฎเซเชฐเชตเชพเชจเซเช เชเซ.
เชชเซเชเซเช เชตเชฟเชเซเชคเชฟ เช เชจเซ เชจเซเชเชถเชพเชจเชจเซ เชเชงเซเชจ เช เชตเชฟเชถเซเชตเชธเชจเซเชฏ เชเซเชจเชฒ เชชเชฐ เชตเชฟเชถเซเชตเชธเชจเซเชฏ เชกเซเชเชพ เชเซเชฐเชพเชจเซเชธเชฎเชฟเชถเชจ
เชตเชฟเชเซเชคเชฟ เชธเชพเชฅเซ, เชเชฎเชจเชธเซเชฌเซ, เชจเซเชเชตเชฐเซเชเชฎเชพเช เชชเซเชเซเชเชจเซ เชเซเช เชเซ.
เช
เชจเซ เช เชธเชฎเชธเซเชฏเชพเชจเซ เชนเชฒ เชเชฐเชตเชพ เชฎเชพเชเซ, เชชเชฆเซเชงเชคเชฟเช เชเชฐเซเชฐเซ เชเซ:
- เชชเซเชเซเช เชจเซเชเชถเชพเชจเชจเซ เชนเชเซเชเชค เชจเชเซเชเซ เชเชฐเชตเซ;
- เชชเซเชฐเชพเชชเซเชค เชเชฐเชจเชพเชฐ เชชเชเซเชทเชจเซ เชเซเชตเชพเชฏเซเชฒเชพ เชชเซเชเซเชเชจเซ เชชเซเชจเช เชกเชฟเชฒเชฟเชตเชฐเซ.
เชตเชงเซเชฎเชพเช, เชชเซเชเซเชเชจเซ เชเซเช เชเชชเชฐเชพเชเชค, เชฐเชธเซเชฆเชจเซ เชเซเชเชจเซ เชถเชเซเชฏเชคเชพ เชชเซเชฐเซ เชชเชพเชกเชตเซ เชเชฐเซเชฐเซ เชเซ เช
เชฅเชตเชพ, เชเซ เชเชเช เชเซเชตเชพเช เชเชฏเซเช เชจเชฅเซ, เชคเซ เชจเซเชเชงเชชเชพเชคเซเชฐ เชตเชฟเชฒเชเชฌ เชธเชพเชฅเซ เชคเซเชจเซ เชกเชฟเชฒเชฟเชตเชฐเซ. เชฌเชงเชพ เชเชฟเชธเซเชธเชพเชเชฎเชพเช, เชธเชฎเชพเชจ เชตเชธเซเชคเซ เชเชฐเชตเชพเชฎเชพเช เชเชตเซ เชเซ: เชชเซเชเซเช เชซเชฐเซเชฅเซ เชชเซเชฐเชธเชพเชฐเชฟเชค เชฅเชพเชฏ เชเซ. เชธเชฎเชฏเชจเซ เชจเชฟเชฏเชเชคเซเชฐเชฟเชค เชเชฐเชตเชพ เชฎเชพเชเซ, เช เชฎเชฟเชเซเชจเชฟเชเชฎ เชเชพเชเชจเซเชเชกเชพเชเชจ เชเชพเชเชฎเชฐเชจเซ เชเชชเชฏเซเช เชเชฐเซ เชเซ, เชเซ เชคเชฎเชจเซ เชชเซเชฐเชคเซเชเซเชทเชพ เช
เชเชคเชฐเชพเชฒเชจเซ เช
เชเชค เชจเชเซเชเซ เชเชฐเชตเชพ เชฆเซ เชเซ. เชคเซเชฅเซ เชชเซเชเซเชเชฎเชพเช
// 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