第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

去udp請(qǐng)求(數(shù)據(jù)包)丟失

去udp請(qǐng)求(數(shù)據(jù)包)丟失

Go
月關(guān)寶盒 2023-03-07 14:30:55
我為 tcp 和 udp 連接編寫了簡(jiǎn)單的服務(wù)器和客戶端package main//server.goimport (    "fmt"    "net"    "os"    "os/signal"    "syscall")func main() {    tcp := 0    udp := 0    defer func(o, t *int) {        fmt.Println(*o, *t)    }(&tcp, &udp)    go func() {        l, err := net.ListenTCP("tcp", &net.TCPAddr{            IP:   net.ParseIP("0.0.0.0"),            Port: 3000,        })        if err != nil {            panic(err)        }        b := make([]byte, 24)        for {            conn, err := l.Accept()            if err != nil {                continue            }            n, err := conn.Read(b)            if err != nil {                continue            }            r := string(b[:n])            if r == "close" {                conn.Close()                break            } else {                _, err = conn.Write([]byte("pong"))                if err != nil {                    continue                }            }            conn.Close()            tcp++        }        l.Close()    }()    go func() {        conn, err := net.ListenUDP("udp", &net.UDPAddr{            IP:   net.ParseIP("0.0.0.0"),            Port: 3000,        })        if err != nil {            panic(err)        }        b := make([]byte, 24)        for {            n, addr, err := conn.ReadFromUDP(b)            if err != nil {                continue            }            r := string(b[:n])            if r == "close" {                break            } else {                _, err = conn.WriteToUDP([]byte("pong"), addr)                if err != nil {                    continue                }            }            udp++        }        conn.Close()    }()    signals := make(chan os.Signal, 1)    signal.Notify(signals, os.Interrupt, syscall.SIGTERM)    <-signals}并得到一個(gè)奇怪的行為:并非所有 udp 請(qǐng)求都在許多連接上發(fā)送或處理。當(dāng)我發(fā)送 100 或 200 時(shí),服務(wù)器和客戶端都告訴我所有請(qǐng)求都有效,但從 1000 開始,服務(wù)器和客戶端的 udp 請(qǐng)求丟失了大約 5%,但沒(méi)有恐慌。我知道 udp 允許數(shù)據(jù)包丟失,但 5% 的本地主機(jī)請(qǐng)求似乎是一個(gè)錯(cuò)誤。
查看完整描述

1 回答

?
桃花長(zhǎng)相依

TA貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超8個(gè)贊

我們知道,UDP是無(wú)連接的,所以丟包可能就是UDP的這種特性造成的。可以有多種方法來(lái)降低數(shù)據(jù)包丟失率。

  • 降低客戶端發(fā)送數(shù)據(jù)包的速率

  • 調(diào)用SetWriteBuffer增加客戶端緩沖區(qū)大小并設(shè)置SetReadBuffer增加服務(wù)器端緩沖區(qū)大小

    conn, err := net.DialUDP("udp", nil, addr)

    err = conn.SetWriteBuffer(64 * 1024 * 1024)
  • 通過(guò)查看系統(tǒng)網(wǎng)絡(luò)信息netstat -s -udp,獲取UDP統(tǒng)計(jì)信息。您可以嘗試在服務(wù)器端更改rmem_max和的默認(rèn)值。rmem_default詳情請(qǐng)參考12


查看完整回答
反對(duì) 回復(fù) 2023-03-07
  • 1 回答
  • 0 關(guān)注
  • 139 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)