程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 使用Socket連接穿越CMWAP代理

使用Socket連接穿越CMWAP代理

編輯:關於JAVA

在J2ME網絡程序開發過程中,為了節約用戶支付的網絡費用,很多J2ME手機網絡程序都支持CMWAP代理。

但是由於CMWAP只是中國移動建立的一個HTTP網絡服務器,所以在使用HTTP網絡編程中,可以很方便的使用。但是在使用socket方法操作時,這個方式好象就行不通了。

下面就介紹一下如何使用socket連接來穿越CMWAP代理。其實由於CMWAP是一個標准的HTTP代理服務器,也就是說可以處理任何的基於HTTP協議的轉發請求,那麼就可以使用socket方式編程時使用HTTP協議即可了。

實現原理:使用socket和CMWAP建立連接,然後將網絡協議設計成HTTP協議的格式,這樣CMWAP就可以繼續實現請求的轉發了,這就是實現的基本原理。

當然,由於socket連接方式可以實現持續連接,這裡的持續連接只存在於手機和CMWAP之間,但是可以只建立一次連接就實現多次的發送,還是基於請求-響應結構實現的,所以可以說實現了一部分socket的功能,而服務器端可以采用已有的HTTP服務器,從而降低開發成本和時間。

該技術的優勢主要有以下幾點:

u 使用CMWAP進行數據傳輸,可以為用戶節約流量費用。

u 由於手機和CMWAP之間建立的是持續連接,所以可以提高網絡響應速度。

u 使用該方式,可以實現服務器端兼容HTTP連接和socket連接,也就是使用一組服務器,降低開發成本和減少開發時間。

實現網絡操作的代碼如下所示:

package cmwaptest;

import Java.io.*;

import Javax.microedition.io.*;

/**

* 測試使用socket連接穿越CMWAP服務器

*/

public class CmwapThread extends Thread{

CmwapForm cf;

public CmwapThread(CmwapForm cf){

this.cf = cf;

}

public void run(){

try{

//測試

cf.displayInfo("開始建立連接!");

//使用代理連接

SocketConnection sc = (SocketConnection)Connector.open("socket://10.0.0.172:80");

//測試

cf.displayInfo("連接建立完畢!");

//發送數據

OutputStream os = sc.openOutputStream();

String requestLine = "get http://www.freewebs.com/cqucyf/a.htm http/1.0\r\n";

String header = "accept:*/*\r\n\r\n";

os.write(requestLine.getBytes());

os.write(header.getBytes());

os.flush();

//測試

cf.displayInfo("數據發送完畢!");

//接收數據

InputStream is = sc.openInputStream();

byte[] data = new byte[10240];

int num = is.read(data);

//測試

cf.displayInfo("數據接受完畢!" + "數據長度為:"+ num);

//處理數據

cf.DOStr(data,num);

sc.close();

}catch(Exception e){

//e.printStackTrace();

cf.doError(e.toString());

}

}

}

Trackback: http://tb.blog.csdn.Net/TrackBack.ASPx?PostId=674736

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved