基於TCP/IP的手機聊天遊戲(附帶原始碼和解釋)之共享類

gudesheng發表於2008-01-03

宣告

這是一個Client基於J2ME以及TCP/IP協議的簡單的聊天程式,在本人模擬器上測試沒問題,但並不保證真機上會出現問題。

程式碼以及整個遊戲框架你可以拿來自由使用,但請註明出處。

(一)

這部分是程式Cilent端和Server端共用的一些類,之所以把它們拿出來單獨寫,是為了讓整個程式的框架更清晰。

其實也就一個類、一個介面,但思想是一樣的,或許你需要更多的類來讓Client和Server共用,舉個例子來說:如果你採用了“髒矩形技術”,那麼可以把每個Item、每個Frame做個共享類放在這裡。

Server介面:

public interface Server {
    public static final int PORT = 8042;
}

這個介面裡很簡單,之定義了一個埠號,以便於以後的程式修改和維護。

Message類:

聽其名字就知道了,這個是訊息類,因為無論是Client端還是Server端,其訊息是能抽象出很多相似的東西的。

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;

public class Message {
    public static final int NO_VALUE = -1;
    public static final int SIGNUP = 0;
    public static final int SIGNUP_ACK = 1;
    public static final int CLIENT_STATUS = 2;
    public static final int SERVER_STATUS = 3;
    public static final int ERROR = 4;
    public static final int SIGNOFF = 5;
    private int type;
    private String str;
    public static int player_id;

    public Message(int type,int player_id,String str) {
         this.type = type;
         Message.player_id = player_id;
         this.str = str;
    }
   
    public int getType() {
        return type;
    }

   public String getStr(){
     return str;
   }
   
    public void archive(DataOutputStream out) throws IOException {
        out.writeInt(type);
        out.writeInt(player_id);
        out.writeUTF(str);
        out.flush();
        System.out.println("***Client has send :"+type);
    }

   public static Message createFromStream(DataInputStream in) throws IOException {
        Message msg = new Message(in.readInt(), in.readInt(),in.readUTF());
        return msg;
    }

   public String toString() {
        return "Message: type # = " + type + ", player_id = "
               + player_id+", content = "+str;
    }

}

因為我們只是實現了簡單的聊天功能,只是傳送簡單的字元給Server端,然後讓其傳送到各個Client端,因此功能比較簡單,目的也僅僅用於學習,但你可以在此功能上增加更多的功能。



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=775420


相關文章