在我的Android应用中,我想要读取音频流并解析其shoutcast元数据。 我在NPR项目中使用StreamProxy工作: http://code.google.com/p/npr-android-app/source/browse/Npr/src/org/npr/android/news/StreamProxy.java?r=e4984187f45c39a54ea6c88f71197762dbe10e72
问题是它无法通过数据连接工作。 NPR也遇到了同样的问题。
总而言之,此代理作为本地Web服务器运行,在应用程序和远程流之间建立接口。它使用生成的自定义端口在localhost 127.0.0.1上运行。 当服务器正在读取流数据时,它会将其复制到应用程序,因为您可以在StreamProxy的第223行阅读:
client.getOutputStream().write(buff, 0, readBytes);
然而,该行通过数据连接产生此异常:
java.net.SocketException: sendto failed: EPIPE (Broken pipe)
我不是套接字和流媒体方面的专家。在这种情况下,我没有得到wifi和数据连接之间的区别。
答案 0 :(得分:-1)
以下几个解决方案!
首先确保您的客户端与您尝试加入的服务器具有相同的版本。如果您没有相同的版本,可以下载MCNostalgia
并使用它来降级您的客户。
更新Java
如果您不希望出现任何不兼容问题,那么我建议您安装最新的Java运行时环境(jre 7.0_05
)。在此之前,建议您卸载其他以前的版本。如果您的操作系统在32bit
中运行,则仅安装32bit
(x86
)版本。如果您有64bit
,请按照这个确切的顺序从64bit
开始,然后安装32bit
。
禁用不需要的网络主机
Hamachi
和Virtual Box
可能就是其中之一。它们可能会减慢或干扰您的连接。访问网络控制面板,然后单击“modify network cards
”(或类似的东西)。右键单击您需要禁用的主机,然后只需单击“禁用”。
禁用防火墙
您可以在控制面板中访问防火墙设置并在那里禁用它。如果这不起作用,您可以尝试禁用路由器的防火墙。如果这些失败,请尝试禁用您的防病毒软件(不建议使用这些选项,因为黑客可以轻易地渗入您的计算机)。
这也适用于:
> Internal exception: java.net.SocketException: Software caused
> connection abort: socket write error