⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mhttpconnection.java

📁 手机上一个坦克游戏
💻 JAVA
字号:
package demo;

//debug
import java.io.*;
import java.util.*;
import javax.microedition.io.*; //debug

/**
 *
 * <p>Title: MobileTank</p>
 * <p>Description: MoblieTank</p>
 * <p>Copyright: Copyright (c) 2003</p>
 * <p>Company: MobileTank</p>
 * @author Panzer_Kavalier
 * @version 1.18
 */

public class MHttpConnection
    implements Runnable {

    private static final String URL = "http://203.93.152.139/"; //203.93.152.139
    public Vector receiveMsgQueue;
    public Vector sendMsgQueue;
    public static String sessionID;
    private Thread thread;
    public long beginConnectTime;
    public long frequency;

    public MHttpConnection() {
        beginConnectTime = System.currentTimeMillis();
        receiveMsgQueue = new Vector();
        sendMsgQueue = new Vector();
        sessionID = null;
        frequency = 10000;
        thread = new Thread(this);
        thread.start();
    }

    public void run() {
        while (true) {
            beginConnectTime = System.currentTimeMillis();
            try {
                Thread.sleep(200L);
            }
            catch (Exception exception) {
                exception.printStackTrace();
            }
            try {
                System.gc();
                connect();
            }
            catch (Exception e) {
                e.printStackTrace();
            }
            long distance = System.currentTimeMillis() - beginConnectTime;
            try {
                if (distance < frequency) {
                    thread.sleep( (long) frequency - distance);
                }
            }
            catch (InterruptedException ex) {
                ex.printStackTrace();
            }

        }
    }

    private void AddRecMessage(HttpClientHolder httpClientHolder) {
        receiveMsgQueue.addElement(httpClientHolder);
    }

    public synchronized void addSendMessage(HttpClientHolder httpClientHolder) {

        sendMsgQueue.addElement(httpClientHolder);
    }

    private synchronized HttpClientHolder getFormSentQueue() {
        if (sendMsgQueue.size() > 0) {
            HttpClientHolder httpClientHolder = (HttpClientHolder) sendMsgQueue.
                elementAt(0);
            sendMsgQueue.removeElementAt(0);
            return httpClientHolder;
        }
        else {
            return null;
        }
    }

    public HttpClientHolder RvmFormGotQueue() {
        //System.out.println("receiveMsgQueue.size() = "  + receiveMsgQueue.size());
        if (receiveMsgQueue.size() == 0) {
            return null;
        }
        else {
            HttpClientHolder httpClientHolder = (HttpClientHolder)
                receiveMsgQueue.elementAt(0);
            receiveMsgQueue.removeElement(httpClientHolder);
            return httpClientHolder;
        }
    }

    public HttpConnection Post(byte sbyte[], String URL) throws Exception {
        HttpConnection httpconnection = (HttpConnection) Connector.open(URL);
        httpconnection.setRequestMethod("POST");
        httpconnection.setRequestProperty("connection", "keep-alive");
        httpconnection.setRequestProperty("content-type",
                                          "application/octet-stream"/*"application/octet-stream"*/);
        httpconnection.setRequestProperty("ms-ua", "nokia/7650");
        httpconnection.setRequestProperty("content-length",
                                          Integer.toString(sbyte.length));

        if (sessionID != null) {
            httpconnection.setRequestProperty("sessionid",
                                              sessionID);
        }

        OutputStream outputstream = httpconnection.openOutputStream();

        outputstream.write(sbyte);
        outputstream.close();
        return httpconnection;
    }

    public HttpConnection Get(String URL) throws Exception {
        HttpConnection httpconnection = (HttpConnection) Connector.open(URL);
        httpconnection.setRequestMethod("GET");
        //httpconnection.setRequestProperty("Connection", "close");
        if (sessionID != null) {
            httpconnection.setRequestProperty("sessionid",
                                              sessionID);
        }

        return httpconnection;
    }

    public void validate(HttpConnection httpconnection) throws
        Exception {
        //System.out.println("do validate");
        DataInputStream datainputstream = httpconnection.
            openDataInputStream();
        int responseCode = httpconnection.getResponseCode();
        if (responseCode != 200) {
            throw new Exception("Network error: " + responseCode);
        }
        int length = 0;
        length = datainputstream.readShort()/*(int) httpconnection.getLength()*/;
        byte rBytes[] = new byte[length];
        datainputstream.read(rBytes, 0, length);
        HttpClientHolder httpClientHolder = new HttpClientHolder(rBytes);
        if (length > 0) {
            //System.out.println("add message to list");
            AddRecMessage(httpClientHolder);
        }
        try {
            if (datainputstream != null) {
                datainputstream.close();
                datainputstream = null;
            }
            if (httpconnection != null) {
                httpconnection.close();
                httpconnection = null;
            }
        }
        catch (Exception exception) {}
    }

    public void clear() {
        sessionID = null;
        sendMsgQueue.removeAllElements();
        receiveMsgQueue.removeAllElements();
    }

    public void connect() throws Exception {
        HttpClientHolder httpClientHolder = getFormSentQueue();
        if (httpClientHolder != null) {
            byte needSendByte[] = httpClientHolder.ToSentBytes();
            HttpConnection conn = Post(needSendByte, URL + "CT");
            validate(conn);
        }
        else {
            if (sessionID != null) {
                validate(Get(URL + "MC"));
            }
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -