这可能是一个愚蠢的问题,但是由于我在这里对 UDP 比较陌生,所以……如果我有两个单独的字节数组,我需要接收方将它们作为一个大数组来获取,例如:
byte[] Array1 = {1,1,1}
byte[] Array2 = {2,2,2}
我是否可以避免创建缓冲区并将每个数组复制到其中,然后发送该缓冲区,如下所示:
byte[] Buffer= new byte[Array1.Length + Array2.Length];
Buffer.BlockCopy(Array1, 0, Buffer, 0, Array1.Length);
Buffer.BlockCopy(Array2, 0, Buffer, Array1.Length, Array2.Length);
udpClient.Send(Buffer, Buffer.Length);
因为如果两者都很大,并且数据速率很高,那么复制会占用很多系统资源......所以我可以以某种方式告诉 udpClient 我正在启动 UDP 分片,然后这样做:
udpClient.ImStartingOneBigDatagram();
udpClient.Send(Array1, Array1.Length);
udpClient.Send(Array2, Array2.Length);
udpClient.ThatsAllFolks();
并确保接收方将获得:
byte[] recv = {1,1,1,2,2,2}
我为此使用 C#,我不需要使用UdpClient
,我只是在说明我的观点。