golang 获取udp套接字缓冲区大小
golang get udp socket buffer size
我正在编写一个udp 客户端并通过SetWriteBuffer 设置udp 套接字发送缓冲区。
addr, _ := net.ResolveUDPAddr("udp", ":8089")
conn, err :=net.DialUDP("udp", nil, addr)
err =conn.SetWriteBuffer(64*1024*1024)
如上,调用SetWriteBuffer函数后如何测试设置值是否有效或获取发送缓冲区值
谢谢大家
检查SetWriteBuffer
返回的错误值。例如,
package main
import (
"log"
"net"
)
func main() {
addr, err := net.ResolveUDPAddr("udp", ":8089")
conn, err := net.DialUDP("udp", nil, addr)
err = conn.SetWriteBuffer(64 * 1024 * 1024)
if err != nil {
log.Print(err)
}
}
查看网络包代码后,SetWriteBuffer 似乎对 setsockopt 进行了系统调用(posix)。 GetWriteBuffer 没有类似的功能。我能想到的唯一方法是像这样对 getsockopt 进行另一个系统调用。
addr, _ := net.ResolveUDPAddr("udp", ":8089")
conn, _ := net.DialUDP("udp", nil, addr)
conn.SetWriteBuffer(10 * 1024)
fd, _ := conn.File()
value, _ := syscall.GetsockoptInt(int(fd.Fd()), syscall.SOL_SOCKET, syscall.SO_SNDBUF)
log.Println(value)
fd.Close()
conn.Close()
我正在编写一个udp 客户端并通过SetWriteBuffer 设置udp 套接字发送缓冲区。
addr, _ := net.ResolveUDPAddr("udp", ":8089")
conn, err :=net.DialUDP("udp", nil, addr)
err =conn.SetWriteBuffer(64*1024*1024)
如上,调用SetWriteBuffer函数后如何测试设置值是否有效或获取发送缓冲区值
谢谢大家
检查SetWriteBuffer
返回的错误值。例如,
package main
import (
"log"
"net"
)
func main() {
addr, err := net.ResolveUDPAddr("udp", ":8089")
conn, err := net.DialUDP("udp", nil, addr)
err = conn.SetWriteBuffer(64 * 1024 * 1024)
if err != nil {
log.Print(err)
}
}
查看网络包代码后,SetWriteBuffer 似乎对 setsockopt 进行了系统调用(posix)。 GetWriteBuffer 没有类似的功能。我能想到的唯一方法是像这样对 getsockopt 进行另一个系统调用。
addr, _ := net.ResolveUDPAddr("udp", ":8089")
conn, _ := net.DialUDP("udp", nil, addr)
conn.SetWriteBuffer(10 * 1024)
fd, _ := conn.File()
value, _ := syscall.GetsockoptInt(int(fd.Fd()), syscall.SOL_SOCKET, syscall.SO_SNDBUF)
log.Println(value)
fd.Close()
conn.Close()