通过UDP传输实时数据

时间:2015-01-12 15:00:37

标签: c# udp

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

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;
}

问题在于发送数据报。似乎其中一些不发送。 在循环内部调用send方法,它可能会导致一些超时问题? 但sentLen值总是> 0并且没有调用catch块。 你能帮我解决这个问题吗? 有什么建议吗?

祝你好运

0 个答案:

没有答案