Java 在Blackberry中获取无线流媒体元数据时TCP超时

Java 在Blackberry中获取无线流媒体元数据时TCP超时,java,blackberry,timeout,Java,Blackberry,Timeout,我正在创建一个广播应用程序,将从各种不同的URL流 现在,在从url获取流的同时,我们还需要播放歌曲的内容,即元数据 现在,我在TimerTask中运行另一个线程,每隔40秒创建一个HTTP连接,比如说like 在使用OS 5及以上版本的模拟器时,没有问题,但当我运行相同的线程进行两到三次迭代时,元数据会一直接收到,但之后出现TCP超时异常,这会停止整个系统和设备,甚至会断开internet连接 你能找到解决这个问题的办法吗 我还分享了从流式URL获取元数据的代码 class metaData

我正在创建一个广播应用程序,将从各种不同的URL流

现在,在从url获取流的同时,我们还需要播放歌曲的内容,即元数据

现在,我在TimerTask中运行另一个线程,每隔40秒创建一个HTTP连接,比如说like

在使用OS 5及以上版本的模拟器时,没有问题,但当我运行相同的线程进行两到三次迭代时,元数据会一直接收到,但之后出现TCP超时异常,这会停止整个系统和设备,甚至会断开internet连接

你能找到解决这个问题的办法吗

我还分享了从流式URL获取元数据的代码

class metaData extends Thread {
    public void run() {
        try {
            boolean metaDataCheckBit = false;

            StreamConnection streamConnection = (StreamConnection)Connector.open(url);
            HttpConnection httpConnection = (HttpConnection)streamConnection;
            httpConnection.setRequestProperty("Icy-metadata", "1");
            int httpStatus = httpConnection.getResponseCode();

            if (httpStatus==HttpConnection.HTTP_OK) {
                String mint = httpConnection.getHeaderField("icy-metaint");
                InputStream inputStream = streamConnection.openInputStream();
                int length = Integer.parseInt(mint);
                int b = 0;
                int count = 0;
                while(count++ < length){
                    b = inputStream.read();
                }
                int metalength = ((int)b)*16;

                if (metalength <= 0) return;

                byte buf[] = new byte[metalength];
                inputStream.read(buf,0,buf.length);
                final String metaData = new String(buf);
                final String streamTille = 
                    metaData.substring(14, metaData.indexOf("StreamUrl")-2);
                System.out.println("Stream Title--------"+streamTille);

                UiApplication.getUiApplication().invokeAndWait(new Runnable(){
                    public void run() {
                        try {
                            titleRf.setText(streamTille);
                        } catch (Exception e) {
                            System.out.println("Exception: " + e.toString());
                        }
                    }
                });
            }
        } catch (Exception e){
            System.out.println("Exception in meta data...."+e);
        }
    }
}
类元数据扩展线程{
公开募捐{
试一试{
布尔metaDataCheckBit=false;
StreamConnection StreamConnection=(StreamConnection)连接器。打开(url);
HttpConnection HttpConnection=(HttpConnection)流连接;
setRequestProperty(“Icy元数据”,“1”);
int-httpStatus=httpConnection.getResponseCode();
if(httpStatus==HttpConnection.HTTP\u确定){
字符串mint=httpConnection.getHeaderField(“ICICE metaint”);
InputStream InputStream=streamConnection.openInputStream();
int length=Integer.parseInt(mint);
int b=0;
整数计数=0;
while(计数++<长度){
b=inputStream.read();
}
国际金属长度=((国际)b)*16;

如果(metalength您没有关闭连接。但是,我不知道这是否会导致问题。请尝试在finally子句中关闭流和连接。谢谢Smith,在关闭所有流之后,它工作了!!!哈哈,幸好它工作了。在BlackBerry中,同时连接的数量有限。在几个连接打开后,我们将继续为您关闭当你尝试打开一个新的twitter时,你已经达到了极限,因此超时了。yupss…嘿,你能帮我一个忙吗,你在BB中集成了twitter吗?没有。从来没有在BB中使用过twitter。