В моем приложении для Android я хочу прочитать аудиопоток и проанализировать его метаданные крика. У меня это работает с использованием StreamProxy, как в проекте NPR: http://code.google.com/p/npr-android-app/source/browse/Npr/src/org/npr/android/news/StreamProxy.java?r=e4984187f45c39a54ea6c88f71197762dbe10e72
Проблема в том, что он не работает через подключение для передачи данных. У NPR такая же проблема.
Подводя итог, этот прокси работает как локальный веб-сервер, создавая интерфейс между приложением и удаленным потоком. Он работает на локальном хосте 127.0.0.1 со сгенерированным пользовательским портом. Когда сервер считывает потоковые данные, он копирует их в приложение, как вы можете прочитать в строке 223 в StreamProxy:
client.getOutputStream().write(buff, 0, readBytes);
Однако эта строка создает это исключение для подключения к данным:
java.net.SocketException: sendto failed: EPIPE (Broken pipe)
Я не эксперт в сокетах и потоковой передаче. Я не понимаю, в чем разница между Wi-Fi и подключением для передачи данных в этом случае.