当我从 tcp 缓冲区读取时,我应该为 mtu 值选择哪个数字



这是我准备读取缓冲区时使用golang的代码:

func Listen() {
listen, _ := net.Listen("tcp4", "127.0.0.1:7000")
defer listen.Close()
for {
conn, _ := listen.Accept()
go handler(&conn)
}
}
func handler(c *net.Conn) {
for {
buf := make([]byte, 1464)
n, _ := (*c).Read(buf)
if n == 0 {
continue
}
}
}

1464 是我的网络 mtu 1492 - 28 IP 报头,那么我应该在这里输入哪个号码?

我的网络使用 ppoe 协议,所以默认值是 (1518 - 18 - 8( 8 是 ppoe 协议标头,rasult 是 1492,那么我应该在那里输入哪个数字 1492 或 1464?(1492-28(

在方案中,1464 与 1492 并没有太大的区别,所以选择更大的一个。 也许增加一点净空!

如果您想要大小恰到好处的超紧密缓冲区,请执行此类操作

func handler(c *net.Conn) {
maxSize:=1464
for {
buf := make([]byte, maxSize)
n, _ := (*c).Read(buf)
if n == 0 {
continue
}
if n > maxSize {
maxSize=n
}
}

它会调整。 NB make(( 是一个相对昂贵的调用,所以你可能想看看 sync.pool 或其他方法来管理缓冲区

相关内容

  • 没有找到相关文章

最新更新