加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – midp有限的套接字?

发布时间:2020-12-15 08:30:21 所属栏目:Java 来源:网络整理
导读:在我看来,MIDP中的套接字创建存在某种限制. 我需要与服务器建立很多连接(没有任何结果),并在第四或第四次尝试我的应用程序崩溃.它在模拟器和我的真实设备中也崩溃了. 为了隔离它受我的代码影响的任何可能性,我隔离了以下代码: try { StreamConnection c; St
在我看来,MIDP中的套接字创建存在某种限制.
我需要与服务器建立很多连接(没有任何结果),并在第四或第四次尝试我的应用程序崩溃.它在模拟器和我的真实设备中也崩溃了.

为了隔离它受我的代码影响的任何可能性,我隔离了以下代码:

try {
        StreamConnection c;
        StringBuffer sb = new StringBuffer();
        c = (StreamConnection) Connector.open(
            "http://www.cnn.com.br/",Connector.READ_WRITE);
        InputStreamReader r = new InputStreamReader(c.openInputStream(),"UTF-8");
        System.out.println(r.read());
        c.close();
    } catch (IOException ex) {
        ex.printStackTrace();
    }

这段代码在第13次尝试中崩溃了.

我试着在一个while循环中添加一个10秒的睡眠,并且它在第13次尝试也崩溃了.

崩溃消息是:

java.io.IOException: Resource limit exceeded for TCP client sockets
 - com.sun.midp.io.j2me.socket.Protocol.open0(),bci=0
 - com.sun.midp.io.j2me.socket.Protocol.connect(),bci=124
 - com.sun.midp.io.j2me.socket.Protocol.open(),bci=125

解决方法

虽然try中的c.close()应该足够了,但我想知道你是否有其他问题触发了这个问题.代码真的应该关闭finally里面的连接和输入流.像这样的东西:

StreamConnection c = null;
InputStream is = null;
try {
  StringBuffer sb = new StringBuffer();
  c = (StreamConnection) Connector.open(
       "http://www.cnn.com.br/",Connector.READ_WRITE);
  is = c.openInputStream();
  InputStreamReader r = new InputStreamReader(is,"UTF-8");
  System.out.println(r.read());
} catch (IOException ex) {
  ex.printStackTrace();
} finally {
  if (is != null) {
    try {
      is.close();
    } catch (Exception ex) {
      System.out.println("Failed to close is!"); 
    }
  }
  if (c != null) {
    try { 
      c.close(); 
    } catch (Exception ex) {
      System.out.println("Failed to close conn!"); 
    }
  }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读