1
我正在使用JXA的BB的XMPP客戶端上工作,但JXA api需要時間從輸入流中讀取,並在2分鐘後通過超時錯誤。我在J2ME中編寫了獨立的套接字程序,並在BB模擬器中執行,它可以交換XML,但輸入流不會從while循環中退出,在讀取時掛起。請看下面的代碼..j2me(BB)中的套接字輸入流問題
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());
}
}
}
}
上述程序不出來的循環,除非直到timesout,請幫我解決這個問題向前推進。
在此先感謝。
那麼上面的代碼能夠從XMPP服務器接收xml流後,閱讀兩個完整的XML流仍然掛着,它不退出,這是我的問題。 – Balaji
「您的代碼在其他方面有誤」 - 要添加到此 - 流應始終在使用後關閉。在你的情況下,放置結束碼的最佳位置是'finally'塊(現在不存在)。 –
好傢伙,解決了BB中的問題,在套接字URL「deviceside = true」參數結束時必須通知檢查了演示應用程序,並得到了thnx的幫助。 – Balaji