2013-02-21 14 views
8

W mojej aplikacji na Androida chcę przeczytać strumień audio i przeanalizować jego metadane. mam to działa przy użyciu StreamProxy jak w projekcie NPR: http://code.google.com/p/npr-android-app/source/browse/Npr/src/org/npr/android/news/StreamProxy.java?r=e4984187f45c39a54ea6c88f71197762dbe10e72java.net.SocketException: sendto failed: EPIPE (Broken pipe) przez połączenie danych do localhost

Problemem jest to, że nie działa za pośrednictwem połączenia danych. NPR ma ten sam problem.

Podsumowując, ten serwer proxy działa jako lokalny serwer sieciowy, tworząc interfejs między aplikacją a strumieniem zdalnym. Działa na localhost 127.0.0.1 z wygenerowanym niestandardowym portem. Gdy serwer jest odczyt danych strumieniowych, to powiela je do aplikacji, jak można przeczytać na linii 223 w StreamProxy:

client.getOutputStream().write(buff, 0, readBytes); 

jednak, że linia generuje ten wyjątek za pośrednictwem połączenia danych:

java.net.SocketException: sendto failed: EPIPE (Broken pipe) 

Nie jestem ekspertem od gniazd i przesyłania strumieniowego. Nie wiem, co robi różnicę między Wi-Fi a połączeniem danych w tym przypadku.

+0

Hi, nawet używam kanał proxy grać streaming. Rzuca ten błąd na niektóre urządzenia. Czy znalazłeś jakieś rozwiązanie? – vijaykumarg

+0

@ romain-piel Czy kiedykolwiek zastanawiałeś się, o co chodzi? Mam ten sam problem, ale nie mogę znaleźć rozwiązania. – Nick

+0

nie: -/to bardzo dziwne. Używam teraz połączenia równolegle z transmisją strumieniową.Nie idealne, ale przynajmniej działa w każdej sytuacji. –

Odpowiedz

-1

Poniżej kilka rozwiązań!

Najpierw upewnij się, że klient ma tę samą wersję co serwer, do którego próbujesz dołączyć. Jeśli nie masz tej samej wersji, możesz pobrać MCNostalgia i użyć jej do obniżenia wersji swojego klienta.

Aktualizacja Java

Jeśli nie chcesz mieć żadnych problemów z niekompatybilnością, wtedy bym zachęcam do zainstalowania najnowszej środowisko wykonawcze Java (jre 7.0_05). Zanim to zrobisz, zaleca się odinstalowanie poprzednich wersji. Jeśli Twój system operacyjny działa pod numerem 32bit, zainstaluj tylko wersję 32bit (x86). Jeśli masz 64bit, zainstaluj zarówno począwszy od 64bit, a następnie 32bit w tej dokładnej kolejności.

Wyłącz un-ce hosty sieciowe

Hamachi i Virtual Box może być jednym z nich. Mogą spowolnić lub zakłócić połączenie. Wejdź do sieciowego panelu sterowania i kliknij "modify network cards" (lub coś podobnego). Kliknij prawym przyciskiem myszy host, którego chcesz wyłączyć, a następnie kliknij wyłącz.

Wyłącz firewall

Można uzyskać dostęp do ustawień zapory w panelu sterowania i wyłącz go tam. Jeśli to nie zadziała, możesz spróbować wyłączyć zaporę routera. Jeśli te się nie powiodą, spróbuj wyłączyć antywirusa (te opcje nie są zalecane, ponieważ hakerzy mogą z łatwością przeniknąć do twojego komputera).

ta działa również na:

> Internal exception: java.net.SocketException: Software caused 
> connection abort: socket write error 
+1

To jest Android - brak opcji aktualizacji jre :( –

Powiązane problemy