我的问题:使用net.Read ...方法仅复制给定字节数组或切片大小的字节数。我当然不想每次都分配64 kB的最大UDP数据报。
有没有办法确定数据报的大小(在数据报标头中)还是再次读取直到完全读取数据报?
尝试从UDP读取:
func (c *UDPConn) ReadFromUDP(b []byte) (n int, addr *UDPAddr, err error)
Run Code Online (Sandbox Code Playgroud)
ReadFromUDP 从 c 读取 UDP 数据包,将有效负载复制到 b。它返回复制到 b 中的字节数以及数据包上的返回地址。
数据包大小应该可以从 获得n,然后您可以使用它来定义自定义切片(或其他数据结构)来存储数据报。这依赖于数据报大小在会话期间不改变,而实际上不应该改变。