8

在我的 Android 应用程序中,我想读取音频流并解析它的广播元数据。我在 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 和数据连接之间有什么区别。

4

1 回答 1

-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
于 2014-01-06T17:48:52.220 回答