2013-02-21 10 views
8

Nella mia app per Android voglio leggere un flusso audio e analizzare i suoi metadati shoutcast. ho ottenuto lavorando con uno StreamProxy come nel progetto NPR: http://code.google.com/p/npr-android-app/source/browse/Npr/src/org/npr/android/news/StreamProxy.java?r=e4984187f45c39a54ea6c88f71197762dbe10e72java.net.SocketException: sendto non riuscito: EPIPE (pipe interrotta) su una connessione dati a localhost

Il problema è che non funziona tramite una connessione dati. NPR ha lo stesso problema.

Per riassumere, questo proxy è in esecuzione come server Web locale, creando un'interfaccia tra l'app e lo stream remoto. Funziona su localhost 127.0.0.1 con una porta personalizzata generata. Quando il server sta leggendo i dati di flusso, si replica per l'applicazione come potete leggere in linea 223 in StreamProxy:

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

Tuttavia quella linea produce questa eccezione attraverso una connessione dati:

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

Non sono un esperto di prese e streaming. In questo caso, non capisco cosa faccia differenza tra un wifi e una connessione dati.

+0

Ciao, anche io sto usando un canale di proxy per riprodurre lo streaming. Sta generando questo errore su alcuni dispositivi. Hai trovato qualche soluzione per questo. – vijaykumarg

+0

@ romain-piel Hai mai capito quale fosse il problema? Sto avendo lo stesso problema ma non riesco a trovare una soluzione. – Nick

+0

no: -/è molto strano. Ora sto usando una connessione in parallelo con lo streaming.Non ideale ma almeno funziona in tutte le situazioni –

risposta

-1

Di seguito sono poche soluzioni!

Verificare innanzitutto che il client abbia la stessa versione del server a cui si sta tentando di accedere. Se non si dispone della stessa versione, è possibile scaricare MCNostalgia e utilizzarlo per eseguire il downgrade del client.

Aggiornamento Java

Se non si desidera avere eventuali problemi di incompatibilità, quindi l'invitiamo ad installare l'ultima ambiente di runtime Java (jre 7.0_05). Prima di farlo, si consiglia di disinstallare altre versioni precedenti. Se il sistema operativo è in esecuzione in 32bit, installare la versione 32bit (x86). Se si dispone di 64bit, installare entrambi a partire da 64bit e quindi 32bit in questo preciso ordine.

host di rete Disabilita non necessari

Hamachi e Virtual Box potrebbe essere uno di loro. Possono rallentare o interferire con la tua connessione. Accedere al pannello di controllo della rete e fare clic su "modify network cards" (o qualcosa di simile). Fai clic con il pulsante destro del mouse su qualsiasi host da disattivare e quindi fai clic su Disattiva.

disabilitare il firewall

È possibile accedere alle impostazioni del firewall nel pannello di controllo e disattivare lì. Se ciò non funziona, puoi provare anche a disabilitare il firewall del tuo router. Se falliscono, prova a disattivare il tuo antivirus (queste opzioni non sono consigliate in quanto gli hacker possono facilmente infiltrarsi nel tuo computer).

Questo funziona anche per:

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

Questo è Android - nessuna opzione per aggiornare il jre :( –