java - midp 的插槽有限?

标签 java sockets java-me midp

在我看来,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 秒的 sleep ,但它也在第 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!"); 
    }
  }
}

关于java - midp 的插槽有限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1167636/

相关文章:

java - 数组不存储数据库中的对象

java - Java 中的 IPv6 可用性

java - 我如何创建一个由 3 个已经存在的类似子类组成的 super 抽象类,其构造函数中具有不同数量的参数

linux - TCP : Simulate EINPROGRESS from server side (linux)

java - 使用scala获取当前机器的公共(public)IP地址

java-me - LWUIT显示粗体文本+普通文本

java-me - 如何检测LWUIT形式的按键事件?

java - JNI 中的复杂数组初始化

java - 从 J2ME 中的 servlet 检索响应时遇到问题

PHP与Mysql的连接