首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

J2ME 通用連接框架(GCF)深度解析:接口體系與 HTTP/Socket 實戰

     編輯:Java 相關知識

受限設備無法使用完整 java.net/java.io,CLDC 定義 Generic Connection Framework(GCF)提供統一網絡抽象。本文梳理接口繼承體系、核心類職責,並示範 HTTP 与 Socket 兩種最常用連接模式。

接口繼承階層

Connection (根接口,唯一方法 close())
├─ StreamConnection          // 流式連接基礎
│   ├─ InputConnection       // 定義 openInputStream()
│   ├─ OutputConnection      // 定義 openOutputStream()
│   ├─ StreamConnectionNotifier // 監聽器,acceptAndOpen() 返回 StreamConnection
│   │   └─ ServerSocketConnection // Socket 伺服器端
│   └─ SocketConnection      // Socket 客戶端,繼承 StreamConnection
├─ DatagramConnection        // 資料報基礎
│   └─ UDPDatagramConnection // UDP 通訊
└─ ContentConnection         // 內容屬性(getEncoding/Length/Type)
    └─ HttpConnection        // HTTP 客戶端,MIDP 強制實現
    └─ HttpsConnection       // HTTPS(MIDP 2.0+)
    └─ SecureConnection      // 安全連接基礎 (MIDP 2.0+)

核心類 Connector

工廠方法 Connector.open(String url) 依 URL 協議自動返回對應連接實例。URL 格式遵循 RFC 2396:{scheme}:[{target}][{params}]。常見範例:

  • https://host:port/path → HttpConnection
  • socket://host:port → SocketConnection
  • socket://:port → ServerSocketConnection(伺服器監聽)
  • datagram://host:port → UDPDatagramConnection

HTTP 連接實戰

String url = "https://example.com/api?param=value";
HttpConnection conn = (HttpConnection) Connector.open(url);
conn.setRequestMethod(HttpConnection.GET);
DataInputStream dis = new DataInputStream(conn.openInputStream());
// 讀取回應...
dis.close(); conn.close();

注意:中文回應需手動轉碼(如 new String(bytes, "ISO8859_1").getBytes("GB2312"))。

Socket 連接實戰

客戶端:

StreamConnection conn = (StreamConnection) Connector.open("socket://192.168.0.1:6666");
OutputStream os = conn.openOutputStream(); os.write(data); os.flush(); os.close();
InputStream is = conn.openInputStream(); // 讀取回應...

伺服器端:

ServerSocketConnection ssc = (ServerSocketConnection) Connector.open("socket://:6666");
while (true) {
    SocketConnection sc = (SocketConnection) ssc.acceptAndOpen();
    new Thread(() -> handle(sc)).start(); // 處理輸入/輸出流
}

GPRS 虛擬 IP 注意事項

移動網關分配虛擬 IP,隨基站切換可能變更,不可依賴長連接 IP 進行伺服器主動推播,建議採用客戶端輪詢或短連接模式。

資源釋放原則

嚴格遵循 finally 區塊關閉所有流與連接,避免句柄洩漏導致後續連接失敗。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved