gpt4 book ai didi

java - midp 的插槽有限?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:36:40 26 4
gpt4 key购买 nike

在我看来,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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com