小编典典

前往:如何接收完整的UDP数据报

go

我的问题:使用net.Read …方法仅复制给定字节数组或切片大小的字节数。我当然不想每次分配64 kB的最大UDP数据报。

有没有一种确定数据报大小(在数据报标头中)或再次读取直到数据报被完全读取的方法?


阅读 329

收藏
2020-07-02

共1个答案

小编典典

尝试ReadFromUDP

func (c *UDPConn) ReadFromUDP(b []byte) (n int, addr *UDPAddr, err error)

ReadFromUDP从c读取UDP数据包,并将有效负载复制到b。它返回复制到b中的字节数以及该数据包上的返回地址。

数据包的大小应该从中可用n,然后您可以使用它来定义用于存储数据报的自定义切片(或其他数据结构)。这依赖于会话期间数据报大小不变,而实际上是不应该的。

2020-07-02