跳到主要內容

發表文章

目前顯示的是有「Java」標籤的文章

HTML5 WebSocket 多人連線麻將

之前以java實作了 多人連線的麻將 Client及Server,現在加上使用HTML5 WebSocket的client端,經最新版的FireFox及Chrome測試。這同樣只是一個Demo,由簡單AI打麻將。現在二種不同平台不同網路協定的Client,可以連線對打麻將了。 ; 底下對於WebSocket的Server及Client實作作一個重點摘要。 1,依據 RFC6455 完成WebSocket的Handshake,網路上有很多資料細節這裡就不多作說明。需要注意的是,對於"Connection: "這條內容,Client送給Server什麼,Server就需要回同樣的東西給Client。例如:Chrome送給Server的是" Connection: Upgrade", 而Firefox送給Server的是" Connection: keep-alive, Upgrade"。Server端對Handshake的回應也是以HTTP response形式,之後就可作一般的socket讀寫。 2,Server端的讀寫,需要特別注意的是Payload len的處理:如果小於等於125,那就是原始資料長度;如果等於126,則實際資料長度為接下來的二個byte指定的16bits數字;如果等於127,則實際資料長度為接下來的八個byte指定64bits數字。 3,Client端的onmessage事件中,如果處理的資料是binary,需對傳入的物件作型別檢查。 ws.onmessage = function (evt) {   if (evt.data instanceof ArrayBuffer) {   } else if (evt.data instanceof Blob) {   } else if (typeof evt.data === "string") {   } else {   } }

java實作多人連線麻將

斷斷續續用java寫了一個多人連線麻將。目前有一個Server,一個連線測試用Client,及一個單機測試用Client,全都是用java實作的Console程式。當進行中的牌局有人離開,則AI會接手打牌,直到所有人離開或打完一圈。 目前考慮使用WebSocket作一個Client。等有空再看看,已經作了點相關 研究 。

用Java寫一個簡單的Web Server

Java的生產力很高,拿它來寫個簡單的Web Server只需要不到200行的程式碼,底下就用Java一步一步實作一個簡單的HTTP網頁伺服器。 ; 在開始前,需要對 HTTP協定 有一個基本的認識,在我們這個例子裡面,只需要知道GET請求(Request)即可。 當我們在瀏覽器的網址列輸入一個位址時,瀏覽器會送出一個GET請求到位址欄裡指定的網頁伺服器,去跟這個網頁伺服器取得網頁或檔案的內容。 例如,我們在網址列輸入 http://www.google.com.tw/ ,就是向www.google.com.tw這台伺服器要求一個檔案,而要求的檔案就是首頁(/)。 這個動作,瀏覽器會送出如下的HTTP請求命令到伺服器去 (以Chrome為例): GET / HTTP/1.1 Host: www.google.com.tw Connection: keep-alive Cache-Control: max-age=0 Accept: application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,i mage/png,*/*;q=0.5 User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.10 ( KHTML, like Gecko) Chrome/8.0.552.237 Safari/534.10 Accept-Encoding: gzip,deflate,sdch Accept-Language: zh-TW,zh;q=0.8,en-US;q=0.6,en;q=0.4 Accept-Charset: Big5,utf-8;q=0.7,*;q=0.3 這裡的重點是第一行和最後一行。 由第一行,伺服器可以知道Client作的是那一種類的請求,這裡可以明顯的看到Client(Chrome)作了一個GET請求。同時,在第一行裡面也可以知道Client請求的是什麼。在此例中,可以看到Client請求的是/這個檔案。在第一行最後的部份,則是註明HTTP協定的版本號。 而最後一行,是一個空行,表示請求包的結束。伺服器在收到一個請求時,從第一行的請求命令開始,一直讀取到一個空行為止,為一個完整的封包。除了...