
рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдиреЗрдЯрд╡рд░реНрдХ рдФрд░ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рддред
рд╕рдВрдХреНрд╖рд┐рдкреНрдд
рд▓реЗрдЦ рдореЗрдВ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдорд┐рд╢рди рдХреА рдореВрд▓ рдмрд╛рддреЛрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдП рдЧрдП рд╣реИрдВ , рдЬрд┐рд╕рдореЗрдВ 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
)рд╕рдВрдЪрд╛рд░рдг рдкрдХреНрд╖ рдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдмрд╛рд░ рдкреИрдХреЗрдЯ рд╕рдВрдЪрд╛рд░рд┐рдд рд╣реЛрдиреЗ рдкрд░ (рдкрд╣рд▓реА рдмрд╛рд░ рдФрд░ рджреВрд╕рд░реА рдмрд╛рд░ рджреЛрдиреЛрдВ) рдЯрд╛рдЗрдорд░ рд╢реБрд░реВ рдХрд░рдирд╛ рд╣реЛрддрд╛ рд╣реИ, рдЯрд╛рдЗрдорд░ рд╕реЗ рдЖрдиреЗ рд╡рд╛рд▓реА рд░реБрдХрд╛рд╡рдЯреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдирд╛ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдЙрд╕реЗ рд░реЛрдХрдирд╛ рд╣реЛрддрд╛ рд╣реИред
рддреЛ, рд╣рдо рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдорд┐рд╢рди рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреА рдкреНрд░рдореБрдЦ рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛ рдЧрдП рд╣реИрдВ:
- рдЪреЗрдХрд╕рдо;
- рдкреИрдХреЗрдЬреЛрдВ рдХреА рдХреНрд░рдо рд╕рдВрдЦреНрдпрд╛;
- рдЯрд╛рдЗрдорд░;
- рд╕рдХрд╛рд░рд╛рддреНрдордХ рдФрд░ рдирдХрд╛рд░рд╛рддреНрдордХ рдкреНрд░рд╛рдкреНрддрд┐рдпрд╛рдВ.
рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдм рдирд╣реАрдВ рд╣реИ!
рдкрд╛рдЗрдкрд▓рд╛рдЗрдирд┐рдВрдЧ рдХреЗ рд╕рд╛рде рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдкреНрд░реЛрдЯреЛрдХреЙрд▓
рдЬрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдкрд░ рд╣рдо рдкрд╣рд▓реЗ рд╣реА рд╡рд┐рдЪрд╛рд░ рдХрд░ рдЪреБрдХреЗ рд╣реИрдВ, рдЙрд╕рдореЗрдВ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдбрд┐рд▓реАрд╡рд░реА рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдмрд╣реБрдд рдЕрдХреНрд╖рдо рд╣реИред рдЬрдм 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)
}
}рдЙрддреНрдкрд╛рджрди
рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдбреЗрдЯрд╛ рд╕рдВрдЪрд░рдг рдФрд░ рдЙрдкрдпреЛрдЧ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рддрдВрддреНрд░
рддрдВрддреНрд░
рдЖрд╡реЗрджрди, рдЯрд┐рдкреНрдкрдгреА
рдЕрдВрддрддрдГ,
рдкреНрд░реЗрд╖рд┐рдд рдкреИрдХреЗрдЯ рдореЗрдВ рдмрд┐рдЯ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдШрдбрд╝реА
рдЯрд╛рдЗрдордЖрдЙрдЯ рдЕрдВрддрд░рд╛рд▓ рдХреА рдЧрдгрдирд╛ рдХрд░рдирд╛ рдФрд░ рдЗрд╕рдХреА рд╕рдорд╛рдкреНрддрд┐ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдирд╛ред рдЙрддреНрддрд░рд╛рд░реНрджреНрдз рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЙрдЪреНрдЪ рд╕реНрддрд░ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рд╕рд╛рде рдкреИрдХреЗрдЯ рдпрд╛ рдЗрд╕рдХреА рд░рд╕реАрдж рд╕рдВрдЪрд░рдг рдХреЗ рджреМрд░рд╛рди рдЦреЛ рдЧрдИ рдереАред рдЗрд╕ рдШрдЯрдирд╛ рдореЗрдВ рдХрд┐ рдкреИрдХреЗрдЯ рджреЗрд░реА рд╕реЗ рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЦреЛ рдирд╣реАрдВ рдЬрд╛рддрд╛ рд╣реИ (рд╕рдордп рд╕рдорд╛рдкреНрддрд┐ рдЕрдВрддрд░рд╛рд▓ рдХреА рд╕рдордпрдкреВрд░реНрд╡ рд╕рдорд╛рдкреНрддрд┐), рдпрд╛ рд░рд╕реАрдж рдЦреЛ рдЬрд╛рддреА рд╣реИ, рдкреБрдирдГрд╕рдВрдЪрд░рдг рд╕реЗ рдкреНрд░рд╛рдкреНрддрдХрд░реНрддрд╛ рдкрдХреНрд╖ рдкрд░ рдкреИрдХреЗрдЯ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирддреА рд╣реИ
рдХреНрд░рдо рд╕рдВрдЦреНрдпрд╛
рдкреНрд░реЗрд╖рдХ рд╕реЗ рд░рд┐рд╕реАрд╡рд░ рддрдХ рднреЗрдЬреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдбреЗрдЯрд╛ рдкреИрдХреЗрдЯ рдХреЛ рдХреНрд░рдо рд╕рдВрдЦреНрдпрд╛ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкреНрд░рд╛рдкреНрдд рдкреИрдХреЗрдЯ рдХреА рдХреНрд░рдо рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЕрдВрддрд░ рд░рд┐рд╕реАрд╡рд░ рдХреЛ рдкреИрдХреЗрдЯ рд╣рд╛рдирд┐ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдкреИрдХреЗрдЯ рдХреА рд╕рдорд╛рди рдХреНрд░рдо рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдкреИрдХреЗрдЯ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╣реИрдВред
рдкреБрд╖реНрдЯрд┐
рдкреНрд░рд╛рдкреНрддрдХрд░реНрддрд╛ рдкрдХреНрд╖ рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рдФрд░ рдкреНрд░реЗрд╖рд┐рдд рдкрдХреНрд╖ рдХреЛ рд╕рдВрдХреЗрдд рджреЗрддрд╛ рд╣реИ рдХрд┐ рд╕рдВрдмрдВрдзрд┐рдд рдкреИрдХреЗрдЯ рдпрд╛ рдкреИрдХреЗрдЯреЛрдВ рдХрд╛ рд╕рдореВрд╣ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреНрд░рд╛рдкреНрдд рд╣реЛ рдЧрдпрд╛ рд╣реИред рдЖрдо рддреМрд░ рдкрд░, рдкрд╛рд╡рддреА рдореЗрдВ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреНрд░рд╛рдкреНрдд рдкреИрдХреЗрдЯреЛрдВ рдХреА рдЕрдиреБрдХреНрд░рдо рд╕рдВрдЦреНрдпрд╛рдПрдБ рд╣реЛрддреА рд╣реИрдВред рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╡реНрдпрдХреНрддрд┐рдЧрдд рдФрд░ рд╕рдореВрд╣ рдкрд╛рд╡рддреА рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдирдХрд╛рд░рд╛рддреНрдордХ рдкреБрд╖реНрдЯрд┐
рд░рд┐рд╕реАрд╡рд░ рджреНрд╡рд╛рд░рд╛ рдкреНрд░реЗрд╖рдХ рдХреЛ рдпрд╣ рд╕реВрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдкреИрдХреЗрдЯ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рд╣реБрдЖ рд╣реИред рдирдХрд╛рд░рд╛рддреНрдордХ рдкрд╛рд╡рддреА рдореЗрдВ рдЖрдорддреМрд░ рдкрд░ рдЙрд╕ рдкреИрдХреЗрдЯ рдХреА рдЕрдиреБрдХреНрд░рдо рд╕рдВрдЦреНрдпрд╛ рд╢рд╛рдорд┐рд▓ рд╣реЛрддреА рд╣реИ рдЬреЛ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рд╣реБрдЖ рдерд╛ред
рдЦрд┐рдбрд╝рдХреА, рдкрд╛рдЗрдкрд▓рд╛рдЗрди
рдкреИрдХреЗрдЯ рд╕рдВрдЪрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛ рд╕рдХрдиреЗ рд╡рд╛рд▓реА рдЕрдиреБрдХреНрд░рдо рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреА рд╕реАрдорд╛ рдХреЛ рд╕реАрдорд┐рдд рдХрд░реЗрдВред рдорд▓реНрдЯреАрдХрд╛рд╕реНрдЯ рдФрд░ рд╣реИрдВрдбрд╢реЗрдХ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ ACK-рд╡реЗрдЯрд┐рдВрдЧ рдореЛрдб рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдереНрд░реВрдкреБрдЯ рдХреЛ рдХрд╛рдлреА рдмрдврд╝рд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ, рд╡рд┐рдВрдбреЛ рдЖрдХрд╛рд░ рдХреА рдЧрдгрдирд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЫреЛрд░ рдХреА рдкреНрд░рд╛рдкреНрддрд┐ рдФрд░ рдмрдлрд░рд┐рдВрдЧ рдХреНрд╖рдорддрд╛рдУрдВ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдиреЗрдЯрд╡рд░реНрдХ рд▓реЛрдб рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред
рдЧреЛ рдиреЗрдЯрд╡рд░реНрдХрд┐рдВрдЧ рдХреЗ рдФрд░ рдЙрджрд╛рд╣рд░рдг
╨Т .
рд╕реНрд░реЛрдд: www.habr.com
