A. 如何在android手機中安裝一個web伺服器啊。。。急求
要在Android手機中安裝web伺服器,一種可能的方法是將Tomcat移植到手機上。Tomcat是一個流行的java Servlet容器,可以用來部署和運行Java Web應用。為了在Android設備上運行Tomcat,需要進行一些准備工作。
首先,你需要獲取一個適合Android設備的Tomcat版本。這可能需要一些尋找和編譯的工作,因為官方版本的Tomcat通常並不針對Android進行了優化。一旦找到合適的版本,就可以開始移植過程。
移植Tomcat到Android設備的過程可能包括修改配置文件和代碼,以適應Android的環境。你可能需要調整網路設置、文件系統訪問許可權和內存管理等。確保在移植過程中遵循Android的最佳實踐,以便優化性能和穩定性。
接下來,你需要設置Android設備的網路配置。這通常涉及到修改/etc/config/network文件或使用其他網路配置工具。你需要為Tomcat服務分配一個靜態IP地址,以便其他設備可以輕松地訪問它。
完成網路配置後,啟動Tomcat服務。你可以通過編寫一個簡單的Android應用或使用ADB命令行工具來啟動Tomcat。確保服務已經正確啟動,並可以通過瀏覽器訪問。
在啟動服務後,檢查Tomcat是否能夠正常運行。你可以通過訪問http://:8080來檢查服務是否可用。如果一切正常,你應該會看到Tomcat的默認頁面。
最後,確保你的Android設備可以連接到網路,並且防火牆設置允許外部訪問。這樣,其他設備就可以通過網路訪問你的Android設備上的Web伺服器了。
總之,將Tomcat移植到Android設備上並設置一個web伺服器需要一些技術知識和耐心。但通過仔細配置和測試,你可以成功地在Android手機上運行Web應用。
B. Android應用伺服器如何實現
1 socket,自己用socket來實現伺服器,自己指定交互規則,達到和客戶端交互。
2 網站web,然後提供一個訪問介面,安卓客戶端可以通過這個介面與伺服器交互,獲取數據,傳遞數據等。具體來說伺服器就是一個web工程,所以你需要搭建伺服器(tomcat等),把你的web應用發布到伺服器上。至於交互一般可以用servlet來和安卓客戶端交互,進而可以用action,這其實是j2e方面的知識了,所以你可以去了解下這方面的知識。
總體來說的話個人感覺第二種方法較好,因為交互層是別人寫好的,你自己寫的話有時候問題比較多。
C. 安卓Termux搭建web伺服器【公網遠程手機Android伺服器】
在安卓Termux上搭建Web伺服器並實現公網遠程訪問的步驟如下:
安裝Apache伺服器:
內網穿透設置:
獲取公網訪問地址:
部署個人網站:
注意事項: 確保你的Android設備有足夠的許可權和網路連接來運行Termux和cpolar。 定期檢查Termux和cpolar的運行狀態,確保服務沒有意外中斷。 考慮到安全性和隱私性,不要將敏感信息存儲在移動設備上搭建的伺服器上,並定期更新和維護你的伺服器環境。
D. 如何實現android和伺服器長連接
提出問題:這種功能必須涉及client(客戶端)和server(伺服器),所以到底client如何和server實現實時連接通訊?
分析問題:這種功能實際上就是數據同步,同時要考慮手機本身、電量、網路流量等等限制因素,所以通常在移動端上有一下兩個解決方案:
1.一種是定時去server查詢數據,通常是使用HTTP協議來訪問web伺服器,稱Polling(輪詢);
2.還有一種是移動端和伺服器建立長連接,使用XMPP長連接,稱Push(推送)。(按照本人理解:客戶端的實現時:
while(true) {
request(timeout);
request(timeout);
}
客戶端發出一個「長」請求,如果伺服器發送消息或者時間out了,客戶端就斷開這個請求,再建立一個長請求
)
從耗費的電量、流量和數據延遲性各方面來說,Push有明顯的優勢。但是使用Push的缺點是:
對於客戶端:實現和維護相對成本高,在移動無線網路下維護長連接,相對有一些技術上的開發難度。
對於伺服器:如何實現多核並發,cpu作業調度,數量龐大的長連接並發維護等技術,仍存在開發難點。
在講述Push方案的原理前,我們先了解一下移動無線網路的特點。
移動無線網路的特點:
因為 IP v4 的 IP 量有限,運營商分配給手機終端的 IP 是運營商內網的 IP,手機要連接 Internet,就需要通過運營商的網關做一個網路地址轉換(Network Address Translation,NAT)。簡單的說運營商的網關需要維護一個外網 IP、埠到內網 IP、埠的對應關系,以確保內網的手機可以跟 Internet 的伺服器通訊
原理圖如下:
GGSN(Gateway GPRS Support Node 網關GPRS支持結點)模塊就實現了NAT功能。
因為大部分移動無線網路運營商都是為了減少網關的NAT映射表的負荷,所以如果發現鏈路中有一段時間沒有數據通訊時,會刪除其對應表,造成鏈路中斷。(關於NAT的作用及其原理可以查看我的另一篇博文:關於使用UDP(TCP)跨區域網,NAT穿透的心得)
Push在Android平台上長連接的實現:
既然我們知道我們移動端要和Internet進行通信,必須通過運營商的網關,所以,為了不讓NAT映射表失效,我們需要定時向Internet發送數據,因為只是為了不然NAT映射表失效,所以只需發送長度為0的數據即可。
這時候就要用到定時器,在android系統上,定時器通常有一下兩種:
1.java.util.Timer
2.android.app.AlarmManager
分析:
Timer:可以按照計劃或者時間周期來執行相關的任務。但是Timer需要用WakeLock來讓CPU保持喚醒狀態,才能保證任務的執行,這樣子會消耗大量流量;當CPU處於休眠的時候,就不能喚醒執行任務,所以應用於移動端明顯是不合適。
AlarmManager:AlarmManager類是屬於android系統封裝好來管理RTC模塊的管理類。這里就涉及到RTC模塊,要更好地了解兩者的區別,就要明白兩者真正的區別。
RTC(Real- Time Clock)實時鬧鍾在一個嵌入式系統中,通常採用RTC 來提供可靠的系統時間,包括時分秒和年月日等;而且要求在系統處於關機狀態下它也能夠正常工作(通常採用後備電池供電),它的外圍也不需要太多的輔助電路,典型的就是只需要一個高精度的32.768KHz 晶體和電阻電容等。(如果對這方面感興趣,可以自己查閱相關資料,這里就說個大概)
好了,回來正題。所以,AlarmManager又稱全局定時鬧鍾。這意味著,當我用使用AlarmManager來定時執行任務,CPU可以正常地休眠,只有在執行任務是,才喚醒CPU,這個過程是很短時間的。
下面簡單來說明其使用:
1.類似於Timer功能:
//獲得鬧鍾管理器
AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);
//設置任務執行計劃
am.setRepeating(AlarmManager.ELAPSED_REALTIME, firstTime, 5*1000, sender);//從firstTime才開始執行,每隔5秒再執行
2.實現全局定時功能:
//獲得鬧鍾管理器
AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);
//設置任務執行計劃
am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, firstTime, 5*1000, sender);//從firstTime才開始執行,每隔5秒再執行
總結:在android客戶端使用Push推送時,應該使用AlarmManager來實現心跳功能,使其真正實現長連接。
在伺服器端的實現:
在伺服器端,可以使用很多語言來實現,如C/C++,java,Erlang等等,如我們國內比較好的極光推送(C開發),openfire(java開發)等等。
最近我看了極光推送的介紹和原理,下面我就說說他們是遇到什麼難題,然後使用什麼技術或者方案來解決呢。
當有大量的手機終端需要與伺服器維持長連接時,對伺服器的設計會是一個很大的挑戰。
假設一台伺服器維護10萬個長連接,當有1000萬用戶量時,需要有多達100台的伺服器來維護這些用戶的長連接,這里還不算用於做備份的伺服器,這將會是一個巨大的成本問題。那就需要我們盡可能提高單台伺服器接入用戶的量,也就是業界已經討論很久了的 C10K 問題。
C2000K
針對這個問題,他們專門成立了一個項目,命名為C2000K,顧名思義,他們的目標是單機維持200萬個長連接。最終他們採用了多消息循環、非同步非阻塞的模型,在一台雙核、24G內存的伺服器上,實現峰值維持超過300萬個長連接。
最後總結:
因為我最近用java在做一個PC、伺服器、android的即時通訊系統(說白了就是模仿QQ,後面希望有不同的功能)。我的原則是用別人的原理,自己來實現,這樣才更好深入了解一些框架。所以,估計難點是在通訊開發和伺服器上的開發,必須深刻了解多消息循環、非同步非阻塞的模型。之後我會發表關於這方面的實現。
在現在的android平台上,已經不是android單機的世界了(我不是說做單機游戲沒有前途)。現在都是依靠發展蓬勃的互聯網來支撐整個IT體系,所以,要成為一個android應用開發高手,必須朝著android、硬體、雲服務這一體系來發展。