MIDPでのソケット作成には、ある種の制限があるように思われます。サーバーに多くの接続を確立する必要があり(一致しません)、4回目または5回目にアプリがクラッシュします。シミュレーターと私の実際のデバイスでもクラッシュします。
コードの影響を受ける可能性を分離するために、次のコードを分離しました。
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