C# 通过UDP传输实时数据
我需要通过UDP(用户数据报协议)传输一些大数据缓冲区。该缓冲区分为1452字节的数据报。前两个字节是数据报编号(++dtgrNr%65536)。该号码用于检测丢失的数据报。我想按如下方式控制比特率: e、 例如,对于1Mbps,缓冲区长度(bufferSize)为100KB,每100ms调用一次计时器函数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;
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是不可靠的;数据报可能会在途中的任何时候丢失。你似乎没有问一个关于某件事情的问题,而这件事情是可以回答的或可以修复的。