В программе с помощью winsock шлю по udp звуковые данные. Если указать IP своего или другого компа, то данные доходят в целости и сохранности. Если указать широковещательный адрес (у меня это 192.168.1.255), то до компа, скоторого отпраляли, данные доходят нормально, а до другого отрывками - отправлееное теряется независимо от способа соединения компов, хоть проводной сеткой (хотя потерь чуть-чуть меньше), хоть беспроводной. В чем может быть причина? Или так и должно быть?
Это-то понятно! Но ведь если указать НЕ широковещательный адрес, а чей-нибудь ip, то всё доходит нормально!
Ну так тут пакеты идет строго всем и приходят в последовательности в которой ты их постал. Почти в такой. А тут получается что пакеты в сеть идет, и если это свитч, то ему приходится напрягаться и всем рассылать по отдельности. Вот могут и быть потери. Хотя мне кажется там не потери, а перемешка скорее всего. Попробуй перед отправкой пакета, чтобы первые 4 байта были - порядковым номером пакета и отсылай их. А на приемной стороне отризай их и сохраняй номера и посмотришь тогда точнее какие именно пакеты теряются или мешаются
slesh, спасибо! Отличная идея! Я теперь вообще ничего не понимаю! Всё работает! Хотя я ничего не исправлял! Магия... Кстати! Во время проверки обнаружились странные пакеты. Их размер, определяетмый функцией recvfrom -1 (это не тире один, это МИНУС ОДИН). Если их игнорировать на качество звука никак не меняется.
Странно! Убрал из программы весь код связанный с проверкой - опять звук прерывистый! Вместо "Привет" "П р е" (ну вобщем как-то так)
Оказывается если поставить Sleep(10); в процидкре приёма, то всё звучит нормально, но это не дело - задержки! Странно! Когда использовал NMUDP, то всё было в порядке, хотя алгоритмы такие же. Вроде.