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

J2ME 網絡編程兩大模式深度對比:HTTP 与 Socket 完整實戰

     編輯:Java 相關知識

J2ME 網絡開發主流採用 HTTP(請求/響應)與 Socket(長連接/雙向流)兩種模式。本文提供雙模式完整客戶端/伺服器端代碼範例,並分析適用場景與 GPRS 環境下的注意事項。

HTTP 模式(請求/響應)

客戶端 GET 請求:

public String requestGET(String baseUrl, String params) throws IOException {
    HttpConnection hpc = null; DataInputStream dis = null;
    try {
        hpc = (HttpConnection) Connector.open(baseUrl + params);
        hpc.setRequestMethod(HttpConnection.GET);
        dis = new DataInputStream(hpc.openInputStream());
        StringBuilder sb = new StringBuilder();
        int ch; boolean esc = false;
        while ((ch = dis.read()) != -1) {
            if (esc) { if (ch == 'n') sb.append('\n'); else sb.append('\\').append((char)ch); esc = false; }
            else if (ch == '\\') esc = true;
            else sb.append((char)ch);
        }
        // 中文轉碼:ISO8859_1 -> GB2312
        return new String(sb.toString().getBytes("ISO8859_1"), "GB2312").trim();
    } finally {
        if (dis != null) dis.close();
        if (hpc != null) hpc.close();
    }
}

伺服器端:普通 JSP/Servlet 接收參數,輸出文本/JSON/XML 即可,無特殊要求。

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(); /* 讀取回應 */ is.close();
conn.close();

伺服器端(Java SE):

ServerSocket server = new ServerSocket(6666);
while (true) {
    Socket client = server.accept();
    new Thread(() -> {
        try {
            InputStream in = client.getInputStream();
            OutputStream out = client.getOutputStream();
            // 讀取請求、寫入響應
        } finally { client.close(); }
    }).start();
}

GPRS 虛擬 IP 與長連接難題

  • 移動網關分配虛擬 IP,基站切換導致 IP 漂移,伺服器無法穩定主動推送。
  • 建議:客戶端定時心跳/輪詢,或採用 HTTP 短連接模式;Socket 適合客戶端主動發起的即時互動(如聊天、遊戲)。
  • Socket 連接需處理斷線重連、閒置超時(NAT 設備可能切斷長連接)。

選型建議

場景推薦模式理由
簡單數據查詢、表單提交、REST APIHTTP穿透防火牆/代理能力強、無狀態、易調試
即時聊天、多人遊戲、推送通知Socket低延遲、雙向流、支持自定義協議
二進制大文件上傳/下載HTTP (POST/Chunked) 或 Socket視伺服器端支援而定
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved