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、硬件、云服务这一体系来发展。