国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

J2ME網絡應用程序在幾款機器下性能比較

2019-11-18 15:54:23
字體:
來源:轉載
供稿:網友

  J2ME應用程序已經
  我在應用開發過程中,經常用到J2ME的網絡應用,但限于J2ME無線設備的能力,我們不得不在可用性和性能之間作出選擇,因此,我做了以下的試驗,并由此總結出一點結論,以方便后來者不必再走彎路。
  我的應用主要功能是測試J2ME設備的網絡連接性能,因此,其他方面的測試概不涉及。
  我們知道,J2ME的通用連接框架為我們提供了http/socket/數據報/本地文件/線外等連接方式,但由于具體設備實現不同而導致程序開發方面的不便。舉例來說,J2ME 的 MIDP 1.0版本中沒有規定socket是必須的,但到了MIDP 2.0 socket才成為必須實現的協議。因此,現階段大多數流行的設備都沒有socket連接,這給我們編程帶來了不利因素。在我們的測試程序中,SOCKET測試采用了StreamConnection類來建立連接,而走的是socket協議。分析一下程序即可知。
  本文涉及了多種協議情況下的數據上傳與下載,中文上傳下載處理及網絡傳輸計時、數據加密解密等方面的內容。為了做到通用,我在該程序的實現中沒有用到特定設備的類。
  本文給出的測試數據中第一個是建立連接所使用的時間,其余9項是連接建立后的數據傳送時間。最后一項是前面9項數據的平均值。
  測試結果數據比較:
  機型,所用時間(秒),連接次數
  
  SUN WTK 模擬器
  HTTP  1.391 0.188 0.625 0.141 0.141 0.391 0.313 0.204 0.375 0.484 0.318
  SOCK  0.500 0.531 0.157 0.531 0.360 0.172 0.313 0.641 0.437 0.266 0.378
  
  Nokia6610
  HTTP 4.258 1.682 1.612 1.373 2.681 1.820 1.264 1.512 1.919 1.808 1.741
  SOCK 未通過
  
  Nokia 7650
  HTTP  7.812 2.790 2.641 2.500 2.630 3.922 2.438 2.672 2.219 2.594  2.712
  SOCK  1.719 1.312 1.609 3.359 3.360 1.375 1.781 3.313 1.250 1.329  2.076
  
  Nokia 6600
  HTTP  3.937 1.984 2.172 1.641 1.500 1.531 2.125 1.906 1.843 2.156 1.873
  SOCK  3.188 1.281 1.406 1.266 1.833 1.688 1.719 1.688 1.625 1.703 1.579
  
  索愛P802
  HTTP  7.484 1.484 1.500 1.859 1.485 1.500 1.938 1.781 1.938 1.701 1.687
  SOCK  1.360 1.328 1.281 1.625 1.406 1.592 1.140 1.281 1.312 1.297 1.362
  
  從以上數據分析,我認為:
  1、  每一款機器每一種連接方式在同一時刻的網絡連接速度波動都較大,即每一次連接都可能有導致網絡連接滯后的不確定因素;
  2、  無論哪一種連接方式,無線設備的網絡連接速度比PC連接要慢;
  3、  當前網絡連接的時間超過了游戲者可接受的延遲,不適合做實時或即時性操作;
  4、  隨著中國移動EDGE的上線,或者聯通公司的CDMA1X普及,實時性手機應用將會得到發展,但仍需要進一步測試;
  5、  在無線應用網絡連接術語中有呼叫建立延遲(Call Setup latency)和通話信號傳輸延遲(Intra-call latency)兩種,從以上數據可以看出,第一種延遲要比后一種延遲要明顯一些,即第一次連接時用戶需要等待更多的時間;
  
  以下是本文的代碼片斷:
  
  public class Game extends MIDlet implements CommandListener {
    PRivate Display display;
    private Form fmHTTP;
    private Form fmHTTP2;
    private Form fmStream;
    private Form fmSocket;
    private Command cmdTest  = new Command("測試", Command.BACK, 0);
    private Command cmdStream = new Command("STREAM", Command.ITEM, 1);
    private Command cmdSocket = new Command("SOCKET", Command.ITEM, 2);
    private Command cmdHTTP  = new Command("HTTP", Command.ITEM, 3);
    private TestThread testThread;
    public Game() {
      display = Display.getDisplay(this);
      
      fmHTTP = new Form("1.HTTP測試");
      fmHTTP.addCommand(cmdStream);
      fmHTTP.addCommand(cmdSocket);
      fmHTTP.addCommand(cmdHTTP2);
      fmHTTP.addCommand(cmdExit);
      fmHTTP.setCommandListener(this);
      fmHTTP.append("HTTP協議網絡測試工具用于檢測手機是否具備HTTP網絡連接能力。第一行數據是由服務器產生的,經過UTF編碼和DES加密傳輸到手機上的。/n");
      
      fmStream = new Form("3.STREAM測試");
      fmStream.addCommand(cmdHTTP);
      fmStream.addCommand(cmdHTTP2);
      fmStream.addCommand(cmdSocket);
      fmStream.setCommandListener(this);
      fmStream.append("STREAM網絡連接是走的socket端口,對應的服務器端口是10000。/n");
      testThread = new TestThread(getAppProperty("Server").toLowerCase().trim());
    }
  
    class TestThread implements Runnable {
      private String server;
      private String message;
      private Form curForm;
      private int responseCode;
      private InputStream is2;
      private HttpConnection conHttp;
      
      
      private String keyOptimize;
      private HttpConnection conOptimize;
      
      public TestThread(String server) {
        this.server = server;
      }
      
      public void start(Form curForm) {
        this.curForm = curForm;
        Thread t = new Thread(this);
        t.start();
      }
          
      public void run() {
        message = "";
        long start,timeused;
        int formid = Integer.parseInt(curForm.getTitle().substring(0,1));
        start = System.currentTimeMillis(); //網絡用時測試起點
        if (formid==1) { //1.HTTP測試
          try {
            String key = genPassWord(); //產生8位的隨機字符串密碼,用于返回給服務器進行DES加密
            conHttp = (HttpConnection) Connector.open("http://" + server + ":8080/ns/hellodes?r=" + key);
            responseCode = conHttp.getResponseCode();
            if (responseCode==HttpConnection.HTTP_OK){
              InputStream is = conHttp.openInputStream();
              int len = (int) conHttp.getLength();
              byte[] bytestr = new byte[len];
              is.read(bytestr); //直接從輸入流中讀取字節,
              cipher = new DesCipher(key.getBytes());
              for (int i = 0; i < bytestr.length / 8; i++) {
                cipher.decrypt(bytestr, i * 8, bytestr, i * 8); //解密;
              }
              message = gbDecode(new String(bytestr)); //解碼
              is.close();
              is = null;
            }else{
              message = "服務器無法連接!" + responseCode;
            }
          } catch (Exception e) {
            message = e.getMessage();
          }
        } else if (formid==3) { //3.STREAM測試
          try {
            conStream = (StreamConnection) Connector.open("socket://"  + server + ":10000", Connector.READ_WRITE);
            InputStream is = conStream.openInputStream();
            byte[] outs = new byte[20];
            int len = 0, ch;
            while ((ch = is.read()) != -1) {
              outs[len] = (byte) ch;
              len++;
            }
            byte[] bytestr = new byte[len];
            System.arraycopy(outs, 0, bytestr, 0, len);
            message = gbDecode(new String(bytestr));
            is.close();
            is = null;
          } catch (Exception e) {
            message = e.getMessage();
          }
        } else if (formid==4) { //SOCKET測試
          /*
          try {
            sck = (SocketConnection)Connector.open("socket://"+server+":10009",Connector.READ_WRITE);

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 南川市| 青州市| 鸡泽县| 昌图县| 前郭尔| 会同县| 桓台县| 仁寿县| 北川| 温泉县| 连城县| 营口市| 揭阳市| 台江县| 青阳县| 莆田市| 县级市| 连南| 平南县| 宁国市| 江阴市| 广水市| 韶关市| 瑞金市| 长汀县| 古丈县| 荆州市| 鹿邑县| 临夏市| 九台市| 东乌珠穆沁旗| 湾仔区| 定边县| 涞源县| 杭州市| 奇台县| 类乌齐县| 岐山县| 徐水县| 通化市| 平泉县|