У меня проблемы с UdpClient в C #.Я передаю аудио через Интернет между двумя клиентами.
На моем микрофоне с частотой дискретизации 16 кГц я отправляю UDP-пакеты со звуком с 6400 байт на пакет.Они никогда не проходят, кроме последнего пакета, который обычно составляет около 1200-3400 с тех пор, как я закрываю запись.Когда я понижаю частоту дискретизации до 8 кГц, я отправляю пакеты с полезной нагрузкой 3200 байт.Они всегда проходят по какой-то причине.
Так что в целом все, что выше 3200, испортилось (не проверил точное число, но ...), с какой стати это?Я думал, может быть, внутренний буфер UdpClient слишком мал или что-то?Поскольку я передаю аудиопакеты, они часто отправляются.
ПОЛУЧИТЬ:
private void audioReceive(IAsyncResult asyn)
{
try
{
byte[] temp = audioSock.EndReceive(asyn, ref this.serverEP);
this.waveProvider.AddSamples(temp, 0, temp.Length);
this.textbox_display.Text = this.textbox_display.Text + " got bytes: " + temp.Length;
audioSock.BeginReceive(new AsyncCallback(audioReceive), null);
}
catch (Exception ez)
{
MessageBox.Show("audioReceive: " + this.textbox_nick.Text + " " +ez.ToString());
}
}
Я не могу найти очевидную ошибку.(Между прочим, асинхронный объект для функции равен null, мне не нужно использовать объект состояния, но это не должно быть связано с этим)
Я знаю, что UDP не надежен, но рассматривает каждый пакет размером 3200пройти и размер 6400 не пахнет для меня подозрительно, особенно с максимальным размером 64кб?
Есть идеи?