gpt4 book ai didi

sockets - j2me(BB)中的套接字输入流问题

转载 作者:行者123 更新时间:2023-12-03 12:06:28 25 4
gpt4 key购买 nike

我正在使用JXA在BB的XMPP客户端上工作,但是JXA api需要花费一些时间从inputstream读取并在2分钟后通过超时错误。我用J2ME编写了单独的套接字程序,并在BB仿真器中执行,它可以交换XML,但inputstream不会从while循环中退出,而无法继续阅读。请参见下面的代码。

class SocketThread extends Thread
{
public void run()
{

ConnectionFactory connFact = new ConnectionFactory();
ConnectionDescriptor connDesc;
connDesc = connFact.getConnection("socket://xxxxxx.p1.im:5222");
if (connDesc != null)
{
SocketConnection httpConn;
httpConn = (SocketConnection)connDesc.getConnection();
try
{
InputStream is = httpConn.openInputStream();
OutputStream os = httpConn.openOutputStream();

String a = "<?xml version=\"1.0\"?><stream:stream to=\"xxxxx.p1.im\" xml:lang=\"en\" xmlns=\"jabber:client\" xmlns:stream=\"http://etherx.jabber.org/streams\" version=\"1.0\">";

os.write(a.getBytes());

byte[] b = new byte[1024];
int len =0;
while ((len = is.read(b)) > 0) {


String str = new String(b);

System.out.println("Server n: " + str);


}

UiApplication.getUiApplication().invokeLater(new Runnable()
{
public void run()
{
Dialog.alert("got response xml stream..: "
);
}
});
}
catch (IOException e)
{
System.err.println("Caught IOException: "
+ e.getMessage());
}
}
}
}

除非直到超时,否则上述程序不会退出循环,请帮助我解决此问题以继续进行。

提前致谢。

最佳答案

读取超时意味着在超时时间内没有数据到达。没有其他的。

但是,您的代码在其他方面是错误的:您假设读取填充了缓冲区,并且在构造String时忽略了“len”的正值,因此您将自己传递给了垃圾用户。

关于sockets - j2me(BB)中的套接字输入流问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7134443/

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