導航:首頁 > 配伺服器 > 如何更改發送給其他伺服器的數據

如何更改發送給其他伺服器的數據

發布時間:2024-06-24 06:56:54

A. 如何修改http協議的請求的數據格式

HTTP客戶請求數據格式

大多數servlet程序都是和瀏覽器客戶以HTTP協議進行通信的,這需要編程人員對程序的基本功能和HTTP協議的具體操作有深入的理解。在學習
servlet和Jsp編程時,有兩點值得注意:首先是對HTTP協議的操作過程和數據格式足夠熟悉,其次要靈活應用servlet的API中的有關方法
正確高效地處理有關數據。

一、HTTP客戶請求的數據格式說明

HTTP請求包括三部分:請求行(Request
Line),頭部(Headers)和數據體(Body)。其中,請求行由請求方法(method),請求網址Request-URI和協議
(Protocol)構成,而請求頭包括多個屬性,數據體則可以被認為是附加在請求之後的文本或二進制文件。

下面這個例子顯示了一個HTTP請求的Header內容,這些數據是真正以網路HTTP協議從IE瀏覽器傳遞到Tomcat服務肢和弊器上的。
GET /icwork/? search=proct HTTP/1.1
Accept:image/gif,image/x-xbitmap,image/jpeg,image/pjpeg,application/vnd.ms-powerpoint,application/vnd.ms-excel,application/msword,*.*
Accept-Language:en-us
Accept-Encoding:gzip,deflate
User-Agent:Mozilla/4.0(compatible;MSIE 5.01;Windows NT 5.0;DigExt)
Host:
Referer:
Connection:Keep-Alive
這段程序使用了6個Header,還有一些Header沒有出現。我們參考這個例子具體解釋HTTP請求格式。
1.HTTP請求行:請求行格式為Method Request-URI Protocol。在上面這個例子里,逗GET /icwork/? search=pruct HTTP/1.1地是請求行。
2.Accept:指瀏覽器或其他客戶可以接愛的MIME文件格式。Servlet可以根據它判斷並返回適當的文件格式。
3.Accept-Charset:指出瀏覽器可以接受的字元編碼。英文瀏覽器的默認值是ISO-8859-1.
4.Accept-Language:指出瀏覽器可以接受的語言種類,如en或en-us,指英語。
5.Accept-Encoding:指出瀏覽器可以接受的編碼方式。編碼方式不同於文件格式,它是為了壓縮文件並加速文件傳遞速度。瀏覽器在接收到Web響應之後先解碼,然後再檢查文件格式。
6.Authorization:當使用密碼機制時用來標識瀏覽器。
7.Cache-Control:設置關於請求被代理伺服器存儲的相關選項。一般servlet用不到。
8.Connection:用來告訴伺服器是否可以維持固定的HTTP連接。HTTP/1.1使用Keep-Alive為默認值,這樣,當瀏覽器需要多個文件時(比如一個HTML文件和相關的圖形文件),不需要每次都建立連接。
9.Content-Type:用來表名request的內容類型。可歷族以用HttpServletRequest的getContentType()方法取得。
10.Cookie:瀏覽器用這個屬性向伺服器發送Cookie。Cookie是在瀏覽器中寄存的小型數據體,它可以記載和伺服器相關的用戶信息,也可以用來實現會話功能。
11.Expect:表時客棚塌戶預期的響應狀態。
12.From:給出客戶端HTTP請求負責人的email地址。
13.Host:對應網址URL中的Web名稱和埠號。
14.If-Match:供PUT方法使用。
15.If-Modified-Since:客戶使用這個屬性表明它只需要在指定日期之後更改過的網頁。因為瀏覽器可以使用其存儲的文件而不必從伺服器請求,這樣節省了Web資源。由於Servlet是動態生成的網頁,一般不需要使用這個屬性。
16.If-None-Match:和If-Match相反的操作,供PUT方法使用。
17.If-Unmodified-Since:和If-Match-Since相反。
18.Pragma:這個屬性只有一種值,即Pragma:no-cache,表明如果servlet充當代理伺服器,即使其有已經存儲的網頁,也要將請求傳遞給目的伺服器。
19.Proxy-Authorization:代理伺服器使用這個屬性,Servlet一般用不到。
20.Range:如果客戶有部分網頁,這個屬性可以請求剩餘部分。
21.Referer:表明產生請求的網頁URL。如比從網頁/icconcept/index.jsp中點擊一個鏈接到網頁/icwork
/search,在向伺服器發送的GET/icwork/search中的請求中,Referer是
/icconcept/index.jsp。這個屬性可以用來跟蹤Web請求是從什麼網站來的。
22.Upgrage:客戶通過這個屬性設定可以使用與HTTP/1.1不同的協議。
23.User-Agent:是客戶瀏覽器名稱。
24.Via:用來記錄Web請求經過的代理伺服器或Web通道。
25.Warning:用來由客戶聲明傳遞或存儲(cache)錯誤。
補充.Transfer-Encoding:
當不能預先確定報文體的長度時,不可能在頭中包含Content-Length域來指明報文體長度,此時就需要通過Transfer-Encoding域來確定報文體長度。

通常情況下,Transfer-Encoding域的值應當為chunked,表明採用chunked編碼方式來進行報文體的傳輸。chunked編碼是HTTP/1.1 RFC里定義的一種編碼方式,因此所有的HTTP/1.1應用都應當支持此方式。

chunked編碼的基本方法是將大塊數據分解成多塊小數據,每塊都可以自指定長度

二、下面是一個分析並顯示客戶請求的Header信息的servlet(tomcat下測試通過):

java 代碼

Code:

import javax.servlet.*;

import javax.servlet.http.*;

import java.io.*;

import java.util.Enumeration;

public class headerinfo extends HttpServlet{

public void doPost(HttpServletRequest req,HttpServletResponse resp)

throws ServletException,IOException

{

/*

Enumeration e = req.getHeaderNames();

while (e.hasMoreElements()) {

String s = (String) e.nextElement();

System.out.println("header: " + s + " " + req.getHeader(s));

}

e = req.getAttributeNames();

while (e.hasMoreElements()) {

String s = (String) e.nextElement();

System.out.println("attribute: " + s + " " + req.getAttribute(s));

}

e = req.getParameterNames();

while (e.hasMoreElements()) {

String s = (String) e.nextElement();

System.out.println("parameter: " + s + " " + req.getParameter(s));

}*/

resp.setContentType("text/html; charset=GBK");

PrintWriter out = resp.getWriter();

out.println("<html><head><title>FormParameterServlet</title></head>");

out.println("<body bgcolor=\"white\">");

out.println("<center><font color=\"#009999\" size=\"4\" face=\"Arial\">");

out.println("<strong>List of all Headers in Servlet Request</strong>");

out.println("</font></center>");

out.println("<hr>");

out.println("<H3>Request Line is:</H3>");

out.println("<b>Method:</b>"+req.getMethod()+"<br>");

out.println("<b>URI:</b>"+req.getRequestURI()+"<br>");

out.println("<b>Protocol</b>"+req.getProtocol()+"<br>");

out.println("<center><h3>Header Name and Values</h3></center>");

out.println("<table border=1 align=center>");

out.println("<tr bgcolor='#99cee6'><th>Name</th><th>value</th></tr>");

Enumeration headernames = req.getHeaderNames();

while(headernames.hasMoreElements()){

String headername = (String)headernames.nextElement();

out.println("<tr><td>"+headername+"</td><td>"+req.getHeader(headername)+"</td></tr>");

}

out.println("</table></body></html>");

out.flush();

}

public void doGet(HttpServletRequest req,HttpServletResponse resp)

throws ServletException,IOException

{

doPost(req,resp);

}

}

B. 我ping伺服器,-t是不停的發ping包,我想限定時間,如何設置參數,比如ping60秒,如何設置

ping命令詳解···你可以學習下·

對於Windows下ping命令相信大家已經再熟悉不過了,但是能把ping的功能發揮到最大的人卻並不是很多,當然我也並不是說我可以讓ping發揮最大的功能,我也只不過經常用ping這個工具,也總結了一些小經驗,現在和大家分享一下。
現在我就參照ping命令的幫助說明來給大家說說我使用ping時會用到的技巧,ping只有在安裝了TCP/IP協議以後才可以使用:
ping [-t] [-a] [-n count] [-l length] [-f] [-i ttl] [-v tos] [-r count] [-s count] [[-j computer-list] | [-k computer-list]] [-wz timeout] destination-list
Options:
-t Ping the specified host until stopped.To see statistics and continue - type Control-Break;To stop - type Control-C.
不停的ping地方主機,直到你按下Control-C。
此功能沒有什麼特別的技巧,不過可以配合其他參數使用,將在下面提到。

-a Resolve addresses to hostnames.
解析計算機NetBios名。
示例:C:\>ping -a 192.168.1.21
Pinging iceblood.yofor.com [192.168.1.21] with 32 bytes of data:
Reply from 192.168.1.21: bytes=32 time<10ms TTL=254
Reply from 192.168.1.21: bytes=32 time<10ms TTL=254
Reply from 192.168.1.21: bytes=32 time<10ms TTL=254
Reply from 192.168.1.21: bytes=32 time<10ms TTL=254
Ping statistics for 192.168.1.21:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
從上面就可以知道IP為192.168.1.21的計算機NetBios名為iceblood.yofor.com。

-n count Number of echo requests to send.
發送count指定的Echo數據包數。
在默認情況下,一般都只發送四個數據包,通過這個命令可以自己定義發送的個數,對衡量網路速度很有幫助,比如我想測試發送50個數據包的返回的平均時間為多少,最快時間為多少,最慢時間為多少就可以通過以下獲知:
C:\>ping -n 50 202.103.96.68
Pinging 202.103.96.68 with 32 bytes of data:
Reply from 202.103.96.68: bytes=32 time=50ms TTL=241
Reply from 202.103.96.68: bytes=32 time=50ms TTL=241
Reply from 202.103.96.68: bytes=32 time=50ms TTL=241
Request timed out.
………………
Reply from 202.103.96.68: bytes=32 time=50ms TTL=241
Reply from 202.103.96.68: bytes=32 time=50ms TTL=241
Ping statistics for 202.103.96.68:
Packets: Sent = 50, Received = 48, Lost = 2 (4% loss),Approximate round trip times in milli-seconds:
Minimum = 40ms, Maximum = 51ms, Average = 46ms
從以上我就可以知道在給202.103.96.68發送50個數據包的過程當中,返回了48個,其中有兩個由於未知原因丟失,這48個數據包當中返回速度最快為40ms,最慢為51ms,平均速度為46ms。

-l size Send buffer size.
定義echo數據包大小。
在默認的情況下windows的ping發送的數據包大小為32byt,我們也可以自己定義它的大小,但有一個大小的限制,就是最大隻能發送65500byt,也許有人會問為什麼要限制到65500byt,因為Windows系列的系統都有一個安全漏洞(也許還包括其他系統)就是當向對方一次發送的數據包大於或等於65532時,對方就很有可能擋機,所以微軟公司為了解決這一安全漏洞於是限制了ping的數據包大小。雖然微軟公司已經做了此限制,但這個參數配合其他參數以後危害依然非常強大,比如我們就可以通過配合-t參數來實現一個帶有攻擊性的命令:(以下介紹帶有危險性,僅用於試驗,請勿輕易施於別人機器上,否則後果自負)
C:\>ping -l 65500 -t 192.168.1.21
Pinging 192.168.1.21 with 65500 bytes of data:
Reply from 192.168.1.21: bytes=65500 time<10ms TTL=254
Reply from 192.168.1.21: bytes=65500 time<10ms TTL=254
………………
這樣它就會不停的向192.168.1.21計算機發送大小為65500byt的數據包,如果你只有一台計算機也許沒有什麼效果,但如果有很多計算機那麼就可以使對方完全癱瘓,我曾經就做過這樣的試驗,當我同時使用10台以上計算機ping一台Win2000Pro系統的計算機時,不到5分鍾對方的網路就已經完全癱瘓,網路嚴重堵塞,HTTP和FTP服務完全停止,由此可見威力非同小可。

-f Set Don't Fragment flag in packet.
在數據包中發送「不要分段」標志。
在一般你所發送的數據包都會通過路由分段再發送給對方,加上此參數以後路由就不會再分段處理。

-i TTL Time To Live.
指定TTL值在對方的系統里停留的時間。
此參數同樣是幫助你檢查網路運轉情況的。

-v TOS Type Of Service.
將「服務類型」欄位設置為 tos 指定的值。

-r count Record route for count hops.
在「記錄路由」欄位中記錄傳出和返回數據包的路由。
在一般情況下你發送的數據包是通過一個個路由才到達對方的,但到底是經過了哪些路由呢?通過此參數就可以設定你想探測經過的路由的個數,不過限制在了9個,也就是說你只能跟蹤到9個路由,如果想探測更多,可以通過其他命令實現,我將在以後的文章中給大家講解。以下為示例:
C:\>ping -n 1 -r 9 202.96.105.101 (發送一個數據包,最多記錄9個路由)

Pinging 202.96.105.101 with 32 bytes of data:

Reply from 202.96.105.101: bytes=32 time=10ms TTL=249
Route: 202.107.208.187 ->
202.107.210.214 ->
61.153.112.70 ->
61.153.112.89 ->
202.96.105.149 ->
202.96.105.97 ->
202.96.105.101 ->
202.96.105.150 ->
61.153.112.90

Ping statistics for 202.96.105.101:
Packets: Sent = 1, Received = 1, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 10ms, Maximum = 10ms, Average = 10ms
從上面我就可以知道從我的計算機到202.96.105.101一共通過了202.107.208.187 ,202.107.210.214 , 61.153.112.70 , 61.153.112.89 , 202.96.105.149 , 202.96.105.97這幾個路由。

-s count Timestamp for count hops.
指定 count 指定的躍點數的時間戳。
此參數和-r差不多,只是這個參數不記錄數據包返回所經過的路由,最多也只記錄4個。

-j host-list Loose source route along host-list.
利用 computer-list 指定的計算機列表路由數據包。連續計算機可以被中間網關分隔(路由稀疏源)IP 允許的最大數量為 9。

-k host-list Strict source route along host-list.
利用 computer-list 指定的計算機列表路由數據包。連續計算機不能被中間網關分隔(路由嚴格源)IP 允許的最大數量為 9。

-w timeout Timeout in milliseconds to wait for each reply.
指定超時間隔,單位為毫秒。
此參數沒有什麼其他技巧。

ping命令的其他技巧:在一般情況下還可以通過ping對方讓對方返回給你的TTL值大小,粗略的判斷目標主機的系統類型是Windows系列還是UNIX/Linux系列,一般情況下Windows系列的系統返回的TTL值在100-130之間,而UNIX/Linux系列的系統返回的TTL值在240-255之間,當然TTL的值在對方的主機里是可以修改的,Windows系列的系統可以通過修改注冊表以下鍵值實現:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]
"DefaultTTL"=dword:000000ff
255---FF
128---80
64----40
32----20
好了,ping命令也基本上完全講解完了,其中還有-j,-k參數我還沒有詳細說明,由於某些原因也包括我自己所收集的資料過少這里也沒有向大家詳細介紹,請大家見諒,如果在看了這篇文章的朋友當中有知道得比我更多的,以及其他使用技巧的也希望您能告訴我,並在此先謝過。

對於Windows下ping命令相信大家已經再熟悉不過了,但是能把ping的功能發揮到最大的人卻並不是很多,當然我也並不是說我可以讓ping發揮最大的功能,我也只不過經常用ping這個工具,也總結了一些小經驗,現在和大家分享一下。
現在我就參照ping命令的幫助說明來給大家說說我使用ping時會用到的技巧,ping只有在安裝了TCP/IP協議以後才可以使用:
ping [-t] [-a] [-n count] [-l length] [-f] [-i ttl] [-v tos] [-r count] [-s count] [[-j computer-list] | [-k computer-list]] [-w timeout] destination-list
Options:
-t Ping the specified host until stopped.To see statistics and continue - type Control-Break;To stop - type Control-C.
不停的ping地方主機,直到你按下Control-C。
此功能沒有什麼特別的技巧,不過可以配合其他參數使用,將在下面提到。

-a Resolve addresses to hostnames.
解析計算機NetBios名。
示例:C:\>ping -a 192.168.1.21
Pinging iceblood.yofor.com [192.168.1.21] with 32 bytes of data:
Reply from 192.168.1.21: bytes=32 time<10ms TTL=254
Reply from 192.168.1.21: bytes=32 time<10ms TTL=254
Reply from 192.168.1.21: bytes=32 time<10ms TTL=254
Reply from 192.168.1.21: bytes=32 time<10ms TTL=254
Ping statistics for 192.168.1.21:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
從上面就可以知道IP為192.168.1.21的計算機NetBios名為iceblood.yofor.com。

-n count Number of echo requests to send.
發送count指定的Echo數據包數。
在默認情況下,一般都只發送四個數據包,通過這個命令可以自己定義發送的個數,對衡量網路速度很有幫助,比如我想測試發送50個數據包的返回的平均時間為多少,最快時間為多少,最慢時間為多少就可以通過以下獲知:
C:\>ping -n 50 202.103.96.68
Pinging 202.103.96.68 with 32 bytes of data:
Reply from 202.103.96.68: bytes=32 time=50ms TTL=241
Reply from 202.103.96.68: bytes=32 time=50ms TTL=241
Reply from 202.103.96.68: bytes=32 time=50ms TTL=241
Request timed out.
………………
Reply from 202.103.96.68: bytes=32 time=50ms TTL=241
Reply from 202.103.96.68: bytes=32 time=50ms TTL=241
Ping statistics for 202.103.96.68:
Packets: Sent = 50, Received = 48, Lost = 2 (4% loss),Approximate round trip times in milli-seconds:
Minimum = 40ms, Maximum = 51ms, Average = 46ms
從以上我就可以知道在給202.103.96.68發送50個數據包的過程當中,返回了48個,其中有兩個由於未知原因丟失,這48個數據包當中返回速度最快為40ms,最慢為51ms,平均速度為46ms。

-l size Send buffer size.
定義echo數據包大小。
在默認的情況下windows的ping發送的數據包大小為32byt,我們也可以自己定義它的大小,但有一個大小的限制,就是最大隻能發送65500byt,也許有人會問為什麼要限制到65500byt,因為Windows系列的系統都有一個安全漏洞(也許還包括其他系統)就是當向對方一次發送的數據包大於或等於65532時,對方就很有可能擋機,所以微軟公司為了解決這一安全漏洞於是限制了ping的數據包大小。雖然微軟公司已經做了此限制,但這個參數配合其他參數以後危害依然非常強大,比如我們就可以通過配合-t參數來實現一個帶有攻擊性的命令:(以下介紹帶有危險性,僅用於試驗,請勿輕易施於別人機器上,否則後果自負)
C:\>ping -l 65500 -t 192.168.1.21
Pinging 192.168.1.21 with 65500 bytes of data:
Reply from 192.168.1.21: bytes=65500 time<10ms TTL=254
Reply from 192.168.1.21: bytes=65500 time<10ms TTL=254
………………
這樣它就會不停的向192.168.1.21計算機發送大小為65500byt的數據包,如果你只有一台計算機也許沒有什麼效果,但如果有很多計算機那麼就可以使對方完全癱瘓,我曾經就做過這樣的試驗,當我同時使用10台以上計算機ping一台Win2000Pro系統的計算機時,不到5分鍾對方的網路就已經完全癱瘓,網路嚴重堵塞,HTTP和FTP服務完全停止,由此可見威力非同小可。

-f Set Don't Fragment flag in packet.
在數據包中發送「不要分段」標志。
在一般你所發送的數據包都會通過路由分段再發送給對方,加上此參數以後路由就不會再分段處理。

-i TTL Time To Live.
指定TTL值在對方的系統里停留的時間。
此參數同樣是幫助你檢查網路運轉情況的。

-v TOS Type Of Service.
將「服務類型」欄位設置為 tos 指定的值。

-r count Record route for count hops.
在「記錄路由」欄位中記錄傳出和返回數據包的路由。
在一般情況下你發送的數據包是通過一個個路由才到達對方的,但到底是經過了哪些路由呢?通過此參數就可以設定你想探測經過的路由的個數,不過限制在了9個,也就是說你只能跟蹤到9個路由,如果想探測更多,可以通過其他命令實現,我將在以後的文章中給大家講解。以下為示例:
C:\>ping -n 1 -r 9 202.96.105.101 (發送一個數據包,最多記錄9個路由)

Pinging 202.96.105.101 with 32 bytes of data:

Reply from 202.96.105.101: bytes=32 time=10ms TTL=249
Route: 202.107.208.187 ->
202.107.210.214 ->
61.153.112.70 ->
61.153.112.89 ->
202.96.105.149 ->
202.96.105.97 ->
202.96.105.101 ->
202.96.105.150 ->
61.153.112.90

Ping statistics for 202.96.105.101:
Packets: Sent = 1, Received = 1, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 10ms, Maximum = 10ms, Average = 10ms
從上面我就可以知道從我的計算機到202.96.105.101一共通過了202.107.208.187 ,202.107.210.214 , 61.153.112.70 , 61.153.112.89 , 202.96.105.149 , 202.96.105.97這幾個路由。

-s count Timestamp for count hops.
指定 count 指定的躍點數的時間戳。
此參數和-r差不多,只是這個參數不記錄數據包返回所經過的路由,最多也只記錄4個。

-j host-list Loose source route along host-list.
利用 computer-list 指定的計算機列表路由數據包。連續計算機可以被中間網關分隔(路由稀疏源)IP 允許的最大數量為 9。

-k host-list Strict source route along host-list.
利用 computer-list 指定的計算機列表路由數據包。連續計算機不能被中間網關分隔(路由嚴格源)IP 允許的最大數量為 9。

-w timeout Timeout in milliseconds to wait for each reply.
指定超時間隔,單位為毫秒。
此參數沒有什麼其他技巧。

ping命令的其他技巧:在一般情況下還可以通過ping對方讓對方返回給你的TTL值大小,粗略的判斷目標主機的系統類型是Windows系列還是UNIX/Linux系列,一般情況下Windows系列的系統返回的TTL值在100-130之間,而UNIX/Linux系列的系統返回的TTL值在240-255之間,當然TTL的值在對方的主機里是可以修改的,Windows系列的系統可以通過修改注冊表以下鍵值實現:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]
"DefaultTTL"=dword:000000ff
255---FF
128---80
64----40
32----20
好了,ping命令也基本上完全講解完了,其中還有-j,-k參數我還沒有詳細說明,由於某些原因也包括我自己所收集的資料過少這里也沒有向大家詳細介紹,請大家見諒,如果在看了這篇文章的朋友當中有知道得比我更多的,以及其他使用技巧的也希望您能告訴我,並在此先謝過。

C. 怎麼修改手機網游的雲伺服器存檔比如黃金……糧食……鑽石……之類的數據

對於單機游戲來說,所有數據都是在內存和硬碟上的,所以單機游戲實際上是有內存修改器和存檔修改器兩種。只不過修改的位置不同,技術上來說都是大同小異,就是直接修改游戲數據。製作技術不外乎兩種,一種是直接分析游戲主程序對應的反匯編代碼,找出關鍵位置。另一種則比較簡單,是通過游戲中數據的變化,來找到對應位置。比如金山游俠中的內存搜索,就是通過搜索內存中某個數值的變化來確定內存地址從而修改數值的。(實際上只要把游戲數據存儲成浮點類型,一票類似原理的修改器都跪了。。。)。存檔修改器也是類似,首先存個檔,然後消耗個數值,然後再存一個檔,比較兩個存檔的差異來確定要修改的位置。知道了要修改的內存或存檔地址之後,剩下的就是寫個程序修改對應內存或者存檔的位置就行了。基本上單機游戲修改器就是這么個流程。

網游的數據都是存儲在伺服器上,所以所謂外掛的原理其實也沒比單機復雜多少。比如有個網游的基本架構如下:

實際上一般還有個賬戶伺服器,用戶賬戶數據一般是跟游戲數據分離開的,一個用戶賬戶是可以登錄若干個游戲伺服器的。但是這個跟本話題無關暫時省略掉。
比如你在游戲中做了某樣操作,比如打個怪,或者開個寶箱,這時候,游戲客戶端的任務就是把你這些操作,轉換成預先定義好的數據格式發送給游戲伺服器,然後游戲伺服器收到數據之後,了解了你的意圖,然後在游戲伺服器上做了一番比較和判斷之後,然後把結果發送給游戲客戶端,你掉了XX血獲得YY經驗,打開寶箱得到ZZZ物品。客戶端收到伺服器的指令之後,在你的畫面上把伺服器的結果顯示出來,僅此而已。
這時候就能看出來了,你僅僅修改游戲客戶端的數值是沒用的,因為數值並沒有同步到游戲伺服器上,下次伺服器給你發送數據的時候就會改回來。
那麼游戲外掛是怎麼做的呢?關鍵就在於外掛會模擬客戶端發送數據參考下圖。

比如在客戶端我正常打怪,手動點擊一秒鍾打怪一次,但是外掛則會毫無節操地一秒鍾發送給伺服器幾十哪怕上百次打怪的數據。於是有些伺服器就會被騙過,從而客戶以更高的效率獲得經驗和獎勵。但是這種方法對外掛編寫者技術要求比較高,首先你得能分析的出來原來客戶端和伺服器段通信的數據封包的格式,然後寫出模擬客戶端的外掛程序。其次最重要的是你得能騙得過伺服器。像一秒鍾打怪幾十次的數據,伺服器還是很容易判斷出你是在作弊的。而且對於這種嚴重破壞游戲公平性的外掛來說,被發現的代價還是很大的。游戲公司也是嚴厲禁止的。
騙不過伺服器怎麼辦呢?於是有些外掛走上了另一條路,這條路上外掛不是模擬游戲客戶端了,而是模擬游戲的主體——人。也就是外掛部分或者全部代替人在游戲中的作用。就像下面的圖示。

還用打怪來舉例子就是外掛給游戲客戶端發送模擬指令,模擬用戶的打怪操作。然後用某種預先定義好的演算法,更有效率的打怪,然後在HP低到一定程度的時候,自動回血。基本上只是一個自動代練的程序實現。這種外掛有些並沒有很大的破壞游戲的公平性,游戲官方也是睜一隻眼閉一隻眼的。

後來好多游戲公司舉得,既然這種外掛並沒有怎麼破壞游戲的公平性,那為啥不自己做呢,能多賺點錢誰不樂意呢?於是有些游戲就又提供了游戲的掛機打怪功能,根據功能不同,免費或收費也不盡相同。於是這種官方提供的東西又被叫做內掛。。。

D. 幾十上百T數據如何在伺服器之間遷移,又什麼解決方案(可以停機)

要看什麼數據,比如文件存儲伺服器,可以買2塊萬兆光纖網卡,直接復制,或者用軟體復制,速度很快就搞定
如果帶資料庫,不建議直接復制,容易出問題,
資料庫通過使用資料庫的軟體備份,比如用友,金蝶的資料庫,然後復制備份數據到新伺服器,原則上,以數據,從小到大開始
如果資料庫實在太大,可以給使用該資料庫軟體的公司聯系,看能不能做資料庫和軟體分離,單獨的一台伺服器只做資料庫,只存放資料庫數據,不負載其他軟體,或者做類似分布式存儲,多台伺服器存儲資料庫數據,不集中在某一台伺服器

E. 如何將數據轉移至新的伺服器

1. 先登陸舊伺服器上的LUM,在「清理垃圾」中將mysql和postgres的日誌清除干凈2. 將/home/ftp, /home/mysql_data, /home/pgsql_data, /home/lum_safe_files目錄打包,文件名為my_data.tar.gz(如果有多個FTP主目錄,需要將所有FTP主目錄都打包):cd /home; tar -zcvf my_data.tar.gz ftp mysql_data pgsql_data lum_safe_files3. 在新伺服器上安裝好LuManager,但需要注意的一點就是,新伺服器的上資料庫版本需要與舊版本的一致,如舊版本的mysql版本為5.1.59,新伺服器上的mysql也必須是5.1,可以是5.1.59,也可以是5.1.61,但不要使用mysql5.5.X4. 在新伺服器上執行lu-stop,停止lu服務5. 將新伺服器上的/home/ftp, /home/mysql_data, /home/pgsql_data, /home/lum_safe_files目錄重命名mv /home/ftp /home/ftp.oldmv /home/mysql_data /home/mysql_data.oldmv /home/pgsql_data /home/pgsql_data.oldmv /home/lum_safe_files /home/lum_safe_files.old6. 將舊伺服器上的備份文件my_data.tar.gz轉移到新伺服器上的/home目錄下,然後解壓tar -zxvf my_data.tar.gz7. 在新伺服器上執行lu-start,啟動lu服務,然後再用舊伺服器上的帳號登陸LUM便可

閱讀全文

與如何更改發送給其他伺服器的數據相關的資料

熱點內容
明朝那些事pdf 瀏覽:727
mysql命令查看錶 瀏覽:531
阿里雲伺服器登錄密碼忘了怎麼辦 瀏覽:495
linuxwwwdata 瀏覽:992
用蘋果終端java編譯 瀏覽:364
安卓怎麼拼接截屏 瀏覽:17
如何從安卓手機上修改wifi密碼 瀏覽:226
安卓12一加如何升級 瀏覽:86
冒險小虎隊pdf下載 瀏覽:542
程序員黑話今晚加班 瀏覽:930
androidgetmethod 瀏覽:798
編程輸出1112 瀏覽:792
加密貨幣礦怎麼樣 瀏覽:212
信息流優化師和程序員 瀏覽:101
pythonkivy框架 瀏覽:734
xshell怎樣返回上一條命令 瀏覽:489
python函數內存機制 瀏覽:829
手機國際網路伺服器地址 瀏覽:398
安卓系統投影儀怎麼連接外接設備 瀏覽:816
陰線向下接進20日均線選股源碼 瀏覽:433