解決這一問題的辦法是在JAD文件中標記出設備能夠同時打開的連接數量。
那麼如何能夠得到設備支持的最大的連接數的,首先你可以去參考設備的規范。比如Motorola的設備規范中一般都列出了能夠支持的連接類型,比如HTTP Socket等。以及設備能夠同時打開的最大連接數。對於在規范中沒有說明的那麼我們只能編寫一個測試用的MIDlet,先測試出這個特性。然後把他寫到JAD文件中供以後使用。
例如下面的JAD文件中就標記了最大連接的數量。
MIDlet-1: Foo, , Foo
MIDlet-Jar-Size: 7063
MIDlet-Jar-URL: foo.jar
MIDlet-Name: Foo
MIDlet-Vendor: Yoyodyne Inc.
MIDlet-Version: 1.0
MicroEdition-Configuration: CLDC-1.1
MicroEdition-Profile: MIDP-2.0
Device-Max-Connection: 3
在應用程序初始化的時候可以讀取這個數量,注意這個數量應該存儲為全局變量,這樣方便在人的地方訪問。初始化的工作如下,
/* Initialization code */
String deviceMaxConnectionString = getAppProperty
("Device-Max-Connection");
int deviceMaxConnection = Integer.parseInt
(deviceMaxConnectionString);
int openConnection = 0;
同時創建多個網路連接,如下:
if (openConnection < deviceMaxConnection) {
HttpConnection connection = (HttpConnection) Connector.open
(uri);
openConnection++;
} else {
// Fail to create connection.
}
關閉網絡連接
connection.close(); openConnection--;
計算連接的數量,
int connection = 0;
try {
while (true) {
Connector.open("http://tools.IEtf.org/Html/rfc262"
+ connection);
}
} catch (Exception e) {
// Max number reached here
}