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

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

最佳答案

尝试ReadFromUDP:

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



数据包的大小应该可以从n获得,然后可以使用ojit_code定义存储数据报的自定义 slice (或其他数据结构)。这依赖于 session 期间数据报大小不变,而实际上这是不应该的。

关于Go:如何接收完整的UDP数据报,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21984569/

10-10 09:58
查看更多