Java – MIDP limited sockets?

In my opinion, there are some restrictions on socket creation in MIDP

In order to isolate any possibility that it is affected by my code, I isolated the following code:

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();
    }

This code crashed on the 13th attempt

I tried to add a 10 second sleep to a while loop, and it crashed on the 13th attempt

The crash message is:

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

Solution

Although c.close () in try should be enough, I wonder if you have any other problems that trigger this problem The code should really close the connection and input stream in finally Something like this:

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!"); 
    }
  }
}
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
分享
二维码
< <上一篇
下一篇>>