#define、const、typedef的差別

gudesheng發表於2008-01-03

(二)
   有關通訊的協議部分,其實就是客戶端和伺服器端約定一種規則來進行通訊。因為客戶端的請求和伺服器端的回覆內容都在HTTP的body裡面,而這個body只不過是一個位元組流,因此客戶端和伺服器端必須在理解這些位元組流上保持一致。

   Fruite-machine裡面是用↓來代表一行新的字元資訊,如果新的字元資訊裡面還需要隔離的話,就利用/來進行隔離。

   所以整個傳送的報文看起來就是這樣的:login↓drap↓ secret

   做為例子,我們來看看玩家在選中一個pet後和伺服器端的報文互動過程:
                  MIDelt---------------------servlet
  首先,MIDlet會傳送旋轉請求到servlet伺服器端。這個請求的報文body中包含選擇寵物的位置,以及寵物下面的標誌(true或者false來表示)。
  然後,伺服器端在接受到這個報文後,會處理。並根據處理的結果返回相應的報文。如果是贏了的話,伺服器端會返回玩家贏的位置,以及盈後的積分,還有旋轉後停的位置。如果失敗的話,伺服器端也會返回一個失敗的報文給玩家。

  客戶端的程式我就不說了,我來重點講講伺服器端的程式。
  下面先看看整體的結構:
  當fruitemachineservlet接收到一個Request的請求的時候,首先分析這個請求是來自哪裡:是手機終端的請求還是web管理頁面的請求,並把請求交給相應的程式處理。Web頁面的請求主要是一些更新資料庫的操作。手機終端請求會先分析請求的型別:是登陸,還是遊戲,還是其它的……並把它們交給相應的程式處理。如果是登陸的話,遊戲處理程式會從資料庫內取出使用者的username和password,驗證使用者。併產生一個新的HTTPsession會話來管理這個連線。如果使用者是退出的話,遊戲邏輯就會銷燬Httpsession。
首先我們來看看servlet程式:
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class FruitMachineServelt extends HttpServlet{
  private UserDatabase userDatabase;
  private AdminProtocolHandler adminProtocolHandler;
  private GameProtocolHandler gameProtocolHandler;

  public void init(ServletConfig config) throws ServletException{
super.init(config);
userDatabase = new UserDatabase();

userDatabase.createUser(“guest”,””);

adminProtocolHandler = new AdminProtocolHandler(userDatabase);
gameProtocolHandler = new GameProtocolHandler(userDatabase);
}

public void doGet(HttpServletRequest request,HttpServletResponse response)
throws IOException,ServletException{
try{
String pathInfo = request.getPathInfo();
If(pathInfo == null){
Reponse.sendError(HttpServletResponse.SC_BAD_REQUEST,”Missing path info”);
}else if(pathInfo.startsWith(“/admin”)){
adminProtocolHandler.doGet(request,response);
}else{
response.sendError(HttpServletResponse.SC_BAD_REQUEST,”Unexpected path info”);
}
}catch(IOException e){
e.printStackTrace();
throw e;
}catch(Exception e){
e.printStackTrace();
throw new ServletException(e.getMessage());
}
}



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


相關文章