Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   [Delphi, Winsock]Теряются UDP пакеты при Broadcast'е. Почему? (https://forum.antichat.xyz/showthread.php?t=203917)

Proger10 14.05.2010 08:26

[Delphi, Winsock]Теряются UDP пакеты при Broadcast'е. Почему?
 
В программе с помощью winsock шлю по udp звуковые данные. Если указать IP своего или другого компа, то данные доходят в целости и сохранности. Если указать широковещательный адрес (у меня это 192.168.1.255), то до компа, скоторого отпраляли, данные доходят нормально, а до другого отрывками - отправлееное теряется независимо от способа соединения компов, хоть проводной сеткой (хотя потерь чуть-чуть меньше), хоть беспроводной. В чем может быть причина? Или так и должно быть?

telega 14.05.2010 09:08

ну это же Udp ...

Proger10 14.05.2010 09:45

Это-то понятно! Но ведь если указать НЕ широковещательный адрес, а чей-нибудь ip, то всё доходит нормально!

slesh 14.05.2010 15:35

Ну так тут пакеты идет строго всем и приходят в последовательности в которой ты их постал. Почти в такой. А тут получается что пакеты в сеть идет, и если это свитч, то ему приходится напрягаться и всем рассылать по отдельности. Вот могут и быть потери. Хотя мне кажется там не потери, а перемешка скорее всего.
Попробуй перед отправкой пакета, чтобы первые 4 байта были - порядковым номером пакета и отсылай их. А на приемной стороне отризай их и сохраняй номера и посмотришь тогда точнее какие именно пакеты теряются или мешаются

Proger10 14.05.2010 18:13

slesh, спасибо! Отличная идея!

Я теперь вообще ничего не понимаю! Всё работает! Хотя я ничего не исправлял! Магия...
Кстати! Во время проверки обнаружились странные пакеты. Их размер, определяетмый функцией recvfrom -1 (это не тире один, это МИНУС ОДИН). Если их игнорировать на качество звука никак не меняется.

Proger10 14.05.2010 18:21

Странно! Убрал из программы весь код связанный с проверкой - опять звук прерывистый! Вместо "Привет" "П р е" (ну вобщем как-то так)

Proger10 14.05.2010 18:25

Оказывается если поставить Sleep(10); в процидкре приёма, то всё звучит нормально, но это не дело - задержки!
Странно! Когда использовал NMUDP, то всё было в порядке, хотя алгоритмы такие же. Вроде.

Proger10 14.05.2010 18:51

А есть способ кодирование аудио, сжимающий лучше, чем mp3??


Время: 12:42