1. 如何用java開發游戲伺服器
首先,我得說明的是,目前市場上新人很難去做pc游戲開發,要麼是做頁游要麼是手游。
頁游不清楚我就不說了,手游裡面,客戶端主要就是c2d和u3d。
如果昌困搜你尺並想做客戶端,那麼你可以轉學u3d,因為它使用的語言是csharp,這個語言和java相似。網上unity的教程也很多,你隨便找一下就有了。
再說說手游伺服器,其實我入行伺服器還是挺巧合的,當初本來是打算做客戶端的,都入職了,因為招不到伺服器,就讓我轉伺服器了。。
伺服器的教程,我至今也沒找到,而且也找不到系統的教程。
開源的伺服器框架也只熟悉kbengine和scut。其中一個是cpp做底層python做開發的,一個是csharp做開發。而且scut已經兩年沒有更新了,應該是死掉了。
所以,想要學伺服器開發,耐歷得碰點運氣。
java伺服器目前主流框架技術有網路層netty或mina,數據協議protobuf,資料庫mysql,緩存資料庫redis,jdbc一般是myts或者jpa,項目管理maven,設計層面spring
然後還需要熟悉多線程,linux的基本操作,git或者svn。
差不多了,這些都有個大致的了解,會用,應該就能找到工作了。
後面再深入需要學習的也挺多的,到時候你再根據業務需求自己琢磨著學吧。
2. JAVA Struts1 獲取伺服器信息 <%=request.ServerVariables("OS")%>
JSP 內轎沖置的HttpServletRequest對象拿謹沒有消帆基ServerVariables這個方法,別想著跟ASP能通用了!!!
3. 如何用Java實現Web伺服器
一 HTTP協議的作用原理
WWW是以Internet作為傳輸媒介的一個應用系統 WWW網上最基本的傳輸單位是Web網頁 WWW的工作基於客戶機/伺服器計算模型 由Web 瀏覽器(客戶機)和Web伺服器(伺服器)構成 兩者之間採用超文本傳送協議(HTTP)進行通信 HTTP協議是基於TCP/IP協議之上的協議 是Web瀏覽器和Web伺服器之間的應用層協議 是通用的 無狀態的 面向對象的協議 HTTP協議的作用原理包括四個步驟
( ) 連接 Web瀏覽器與Web伺服器建立連接 打開一個稱為socket(套接字)的虛擬文件 此文件的建立標志著連接建立成功
( ) 請求 Web瀏覽器通過socket向Web伺服器提交請求 HTTP的請求一般是GET或POST命令(POST用於FORM參數的傳遞) GET命令的格式為
GET 路徑/文件名 HTTP/
文件名指出所訪問的文件 HTTP/ 指出Web瀏覽器使用的HTTP版本
( ) 應答 Web瀏覽器提交請求後 通過HTTP協議傳送給Web伺服器 Web伺服器接到後 進行事務處理 處理結果又通過HTTP傳回給Web瀏覽器 從而在Web瀏覽器上顯示出所請求的頁面
例 假設客戶機與 /mydir/l建立了連接 就會發送GET命令 GET /mydir/l HTTP/ 主機名為的Web伺服器從它的文檔空間中搜索子目錄mydir的文件l 如果找到該文件 Web伺服器把該文件內容傳送給相應的Web瀏覽器
為了告知 Web瀏覽器傳送內容的類型 Web伺服器首先傳送一些HTTP頭信息 然後傳送具體內容(即HTTP體信息) HTTP頭信息和HTTP體信息之間用一個空行分開
常用的HTTP頭信息有
① HTTP OK
這是Web伺服器應答的第一行 列出伺服器正在運行的HTTP版本號和應答代碼 代碼 OK 表示請求完成
② MIME_Version
它指示MIME類型的版本
③ content_type 類型
這個頭信息非常重要 它指示HTTP體信息的MIME類型 如 content_type text/指示傳送的數據是HTML文檔
④ content_length 長度值
它指示HTTP體信息的長度(位元組)
( ) 關閉連接 當應答結束後 Web瀏覽器與Web伺服器必須斷開 以保證其它Web瀏覽器能夠與Web伺服器建立連接
二絕敗胡 Java實現Web伺服器功能的程序設計
根據上述HTTP協議的作用原理 實現GET請求的Web伺服器程序的方法如下
( ) 創並攔建ServerSocket類對象 監聽埠 這是為了區別於HTTP的標准TCP/IP埠 而取的
( ) 等待 接受客戶機連接到埠 得到與客戶機連接的socket
( )枯大 創建與socket字相關聯的輸入流instream和輸出流outstream
( ) 從與socket關聯的輸入流instream中讀取一行客戶機提交的請求信息 請求信息的格式為 GET 路徑/文件名 HTTP/
( ) 從請求信息中獲取請求類型 如果請求類型是GET 則從請求信息中獲取所訪問的HTML文件名 沒有HTML文件名時 則以l作為文件名
( ) 如果HTML文件存在 則打開HTML文件 把HTTP頭信息和HTML文件內容通過socket傳回給Web瀏覽器 然後關閉文件 否則發送錯誤信息給Web瀏覽器
( ) 關閉與相應Web瀏覽器連接的socket字
下面的程序是根據上述方法編寫的 可實現多線程的Web伺服器 以保證多個客戶機能同時與該Web伺服器連接
程序 WebServer java文件
//WebServer java 用JAVA編寫Web伺服器
import java io *
import *
public class WebServer {
public static void main(String args[]) {
int i= PORT=
ServerSocket server=null
Socket client=null
try {
server=new ServerSocket(PORT)
System out println( Web Server is listening on port +server getLocalPort())
for ( ) {client=server accept() //接受客戶機的連接請求
new ConnectionThread(client i) start()
i++
}
} catch (Exception e) {System out println(e) }
}
}
/* ConnnectionThread類完成與一個Web瀏覽器的通信 */
class ConnectionThread extends Thread {
Socket client //連接Web瀏覽器的socket字
int counter //計數器
public ConnectionThread(Socket cl int c) {
client=cl
counter=c
}
public void run() //線程體
{try {
String destIP=client getInetAddress() toString() //客戶機IP地址
int destport=client getPort() //客戶機埠號
System out println( Connection +counter+ connected to +destIP+ on port +destport+ )
PrintStream outstream=new PrintStream(client getOutputStream())
DataInputStream instream=new DataInputStream(client getInputStream())
String inline=instream readLine() //讀取Web瀏覽器提交的請求信息
System out println( Received +inline)
if (getrequest(inline)) { //如果是GET請求
String filename=getfilename(inline)
File file=new File(filename)
if (file exists()) { //若文件存在 則將文件送給Web瀏覽器
System out println(filename+ requested )
outstream println( HTTP/ OK )
outstream println( MIME_version )
outstream println( Content_Type text/ )
int len=(int)file length()
outstream println( Content_Length +len)
outstream println( )
sendfile(outstream file) //發送文件
outstream flush()
} else { //文件不存在時
String notfound=
Error file not found
outstream println( HTTP/ no found )
outstream println( Content_Type text/ )
outstream println( Content_Length +notfound length()+ )
outstream println( )
outstream println(notfound)
outstream flush()
}
}
long m =
while (m < ) {m ++ } //延時
client close()
} catch (IOException e) {
System out println( Exception +e)
}
}
/* 獲取請求類型是否為 GET */
boolean getrequest(String s) {
if (s length()> )
{if (s substring( ) equalsIgnoreCase( GET )) return true
}
return false
}
/* 獲取要訪問的文件名 */
String getfilename(String s) {
String f=s substring(s indexOf(′ ′)+ )
f=f substring( f indexOf(′ ′))
try {
if (f charAt( )==′/′)
f=f substring( )
} catch ( e) {
System out println( Exception +e)
}
if (f equals( )) f= l
return f
}
/*把指定文件發送給Web瀏覽器 */
void sendfile(PrintStream outs File file) {
try {
DataInputStream in=new DataInputStream(new FileInputStream(file))
int len=(int)file length()
byte buf[]=new byte[len]
in readFully(buf)
outs write(buf len)
outs flush()
in close()
} catch (Exception e) {
System out println( Error retrieving file )
System exit( )
}
}
}
程序中的ConnectionThread線程子類用來分析一個Web瀏覽器提交的請求 並將應答信息傳回給Web瀏覽器 其中 getrequest()方法用來檢測客戶的請求是否為 GET getfilename(s)方法是從客戶請求信息s中獲取要訪問的HTML文件名 sendfile()方法把指定文件內容通過socket傳回給Web瀏覽器
對上述程序的getrequest()方法和相關部分作修改 也能對POST請求進行處理
三 運行實例
為了測試上述程序的正確性 將編譯後的WebServer class ConnectionThread class和下面的l文件置於網路的某台主機的同一目錄中(如 主機NT SRV的C JWEB目錄)
程序 l文件
年 月 日
首先在該主機上用java命令運行WebServer class
C jweb>java webserver
然後在客戶機運行瀏覽器軟體 在URL處輸入WebServer程序所屬的URL地址(如 ) 就在瀏覽器窗口顯示出指定的HTML文檔
注意 不能預設埠號 如預設 則運行該主機的正常WEB伺服器
lishixin/Article/program/Java/hx/201311/26626
4. Java Web 伺服器的消息推送 幾種方案
Java Web 伺服器的消息推送有以下幾種方案:5. java版伺服器地址怎麼看
方法如下
1、單擊電腦桌面「win」圖標,在菜單中點擊設置選項,進入設置頁面;
2、點擊「網路和Internet」選項,接著點擊左側屬性欄的「狀態」選項;
3、在頁面中進入「網路和共享中心」頁面,在頁面中單擊連接的網路名稱;
4、在彈窗中選擇「常規」選項,然後點擊頁面中的「詳細信息」選項;
5、在詳細信息頁面即可查看當前伺服器地址。