#define、const、typedef的差別
(二)
有關通訊的協議部分,其實就是客戶端和伺服器端約定一種規則來進行通訊。因為客戶端的請求和伺服器端的回覆內容都在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
相關文章
- typedef與define的區別
- define和typedef的區別
- #define 與 typedef
- define與typedef區別與聯絡
- typedef和define具體的詳細區別
- const、define 和 static 的區別
- 淺談typedef與define
- C語言中const和#define的區別C語言
- #define巨集與列舉以及typedef關鍵字的區別
- PHP 定義常量 define 和 const的區別PHP
- php中const和define有什麼區別PHP
- define巨集定義和const常量定義之間的區別
- iOS常用關鍵字static、const、extern、defineiOS
- [PHP]常量定義: const和define區別和運用; 附constant解釋PHP
- const char*, char const*, char*const的區別
- C#中 Const 、readonly、static 之間的差別和關係C#
- define和defined區別
- 【02】儘量以const,enum,inline替換#defineinline
- C語言(typedef 型別取別名)C語言型別
- 條款02: 儘量以const,enum,inline 替換 #defineinline
- const char*, char const*, char*const 有何區別?
- 第一篇:儘量多的以 const/enum/inline 替代 #defineinline
- var、const、let 的區別
- const與static的區別
- C語言 關鍵字const的作用 const int* 和int *const 的區別C語言
- C++typedef宣告,enum列舉型別C++型別
- var、let和const的區別
- var和let/const的區別
- const和readonly的區別
- typedef用法
- let const var 區別
- var let const區別
- let與const區別
- let,const,var區別
- JavaScript中let、const、var 的區別JavaScript
- #define 的神奇操作
- 多用型別常量替代#define預處理指令型別
- var、let、const宣告變數的區別變數