Я работаю на XMPP-клиенте для BB с JXA, но JXA API требует времени для чтения из входного потока и ошибки тайм-аута через 2 минуты.Я написал отдельную программу для сокетов в J2ME и выполнялся в симуляторе BB, он мог обмениваться XML, но входной поток не завершается из цикла 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());
}
}
}
}
Выше программа не выходит из цикла, пока не истечет время ожидания, пожалуйста, помогите мне исправить эту проблему, чтобы двигаться вперед.
Заранее спасибо.