C# 通过UDP传输实时数据

C# 通过UDP传输实时数据,c#,udp,C#,Udp,我需要通过UDP(用户数据报协议)传输一些大数据缓冲区。该缓冲区分为1452字节的数据报。前两个字节是数据报编号(++dtgrNr%65536)。该号码用于检测丢失的数据报。我想按如下方式控制比特率: e、 例如,对于1Mbps,缓冲区长度(bufferSize)为100KB,每100ms调用一次计时器函数SendBuffer。 对于2Mbps,缓冲区长度为200KB,以此类推 SendBuffer() // simplified version { int current_idx = 0;

我需要通过UDP(用户数据报协议)传输一些大数据缓冲区。该缓冲区分为1452字节的数据报。前两个字节是数据报编号(++dtgrNr%65536)。该号码用于检测丢失的数据报。我想按如下方式控制比特率: e、 例如,对于1Mbps,缓冲区长度(bufferSize)为100KB,每100ms调用一次计时器函数
SendBuffer
。 对于2Mbps,缓冲区长度为200KB,以此类推

SendBuffer() // simplified version
{

int current_idx = 0;
while(current_idx < bufferSize)
{
  GetCounterBytes(counter, ref b1, ref b2);  // obtaining two bytes of datagram counter
  datagram[0] = b1;
  datagram[1] = b2;
  Array.Copy(buffer, current_idx, datagram, 2, datagramSize);

  try
  {
     int sentLen = udpClient.Send(datagram, datagram.Length);
     if(sentLen <= 0)
          Console.WriteLine("error");
  }
  catch .........

  current_idx += datagramSize;
}
SendBuffer()//简化版本
{
int current_idx=0;
while(当前_idx

致以最诚挚的问候

如果sentLen is alsways>0表示数据包已发送,但使用udp协议,您不确定数据包是否已接收,我建议使用网络嗅探器分析问题,例如WireShark“似乎其中一些数据包未发送”——基于什么证据?您甚至写道“这个数字是用来检测丢失的数据报”,所以你似乎明白UDP是不可靠的;数据报可能会在途中的任何时候丢失。你似乎没有问一个关于某件事情的问题,而这件事情是可以回答的或可以修复的。