2013-02-21 7 views
8

In meiner Android App möchte ich einen Audio-Stream lesen und seine Shoutcast-Metadaten analysieren. Ich habe es funktioniert eine StreamProxy wie in NPR-Projekt mit: http://code.google.com/p/npr-android-app/source/browse/Npr/src/org/npr/android/news/StreamProxy.java?r=e4984187f45c39a54ea6c88f71197762dbe10e72java.net.SocketException: sendto fehlgeschlagen: EPIPE (Broken pipe) über eine Datenverbindung zu localhost

Das Problem ist, dass es über eine Datenverbindung nicht funktioniert. NPR hat das gleiche Problem.

Zusammenfassend läuft dieser Proxy als lokaler Webserver, der eine Schnittstelle zwischen der App und dem Remote-Stream herstellt. Es läuft auf localhost 127.0.0.1 mit einem generierten benutzerdefinierten Port. Wenn der Server die Stream-Daten liest, repliziert es auf die App, wie Sie bei der Linie 223 in StreamProxy zu lesen:

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

jedoch diese Linie diese Ausnahme über eine Datenverbindung erzeugt:

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

Ich bin kein Experte für Sockets und Streaming. Ich verstehe nicht, was in diesem Fall zwischen einem WLAN und einer Datenverbindung unterscheidet.

+0

Hallo, auch ich einen Proxy-Kanal bin mit dem Streaming zu spielen. Es wirft diesen Fehler auf einige Geräte. Haben Sie dafür eine Lösung gefunden? – vijaykumarg

+0

@ romain-piel Hast du jemals herausgefunden, worum es hier ging? Ich habe das gleiche Problem, kann aber keine Lösung finden. – Nick

+0

nein: -/Es ist ein sehr komischer. Ich verwende jetzt eine Verbindung parallel zum Streaming.Nicht ideal, aber zumindest funktioniert es in jeder Situation –

Antwort

-1

Unten finden Sie einige Lösungen!

Stellen Sie zuerst sicher, dass Ihr Client dieselbe Version wie der Server hat, dem Sie beitreten möchten. Wenn Sie nicht die gleiche Version haben, können Sie MCNostalgia herunterladen und verwenden, um Ihren Client herunterzustufen.

aktualisieren Java

Wenn Sie keine Kompatibilitätsprobleme haben wollen, dann würde ich empfehlen Ihnen, die neueste Java-Laufzeitumgebung zu installieren (jre 7.0_05). Bevor Sie das tun, sollten Sie andere frühere Versionen deinstallieren. Wenn das Betriebssystem unter 32bit ausgeführt wird, installieren Sie nur die Version 32bit (x86). Wenn Sie 64bit haben, installieren Sie beide mit 64bit und dann 32bit in dieser genauen Reihenfolge.

Deaktivieren nicht benötigte Netzwerk-Hosts

Hamachi und Virtual Box könnte einer von ihnen sein. Sie können Ihre Verbindung verlangsamen oder stören. Rufen Sie das Netzwerk-Kontrollfeld auf und klicken Sie auf "modify network cards" (oder etwas Ähnliches). Klicken Sie mit der rechten Maustaste auf den Host, den Sie deaktivieren möchten, und klicken Sie dann auf Deaktivieren.

Deaktivieren Sie Ihre Firewall

Sie die Firewall-Einstellungen in der Systemsteuerung zugreifen können und sie dort deaktivieren. Wenn das nicht funktioniert, können Sie auch versuchen, die Firewall Ihres Routers zu deaktivieren. Wenn diese fehlschlagen, versuchen Sie, Ihren Antivirus zu deaktivieren (diese Optionen werden nicht empfohlen, da Hacker Ihren Computer leicht infiltrieren können).

Dies funktioniert auch für:

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

Das ist Android - keine Option, um das jre zu aktualisieren :( –

Verwandte Themen