我在做一个android客户端,自己写服务端,由于服务端的经验不多,所以请教各位,帮帮忙!
我们的服务端用java写,tomcat服务器,mysql数据库,现在有很多疑问,比如:1.客户端与服务端的连接是用socket还是apache的HTTpClient包?哪...
我们的服务端用java写,tomcat服务器,mysql数据库,现在有很多疑问,比如:
1.客户端与服务端的连接是用socket还是apache的HTTpClient包?哪个好用
2.如何处理并发量的问题,我们的目标是5000就足够了,需要用到哪些技术,线程池? NIO?或者别的,这个很关键,望赐教,请详细说说!不尽感激! 展开
1.客户端与服务端的连接是用socket还是apache的HTTpClient包?哪个好用
2.如何处理并发量的问题,我们的目标是5000就足够了,需要用到哪些技术,线程池? NIO?或者别的,这个很关键,望赐教,请详细说说!不尽感激! 展开
2个回答
展开全部
首先,android客户端与服务器端的通信用socket和http通信都是可以实现的,主要看你的需求是什么,如果需要实时通信,那么选用socket。否则选用http通信。因为socket会建立通信管道。耗费资源过大。
其次,没太明白你说得处理并发量的目标5000是什么意思。不知道是不是可以理解为你要同时与服务器进行多方数据交互。如果是建议你使用socket通信。并且可以将你得客户端并发处理用异步任务的方式处理(当然多线程也可以,因为异步任务本身就是多线程)。android客户端的耗时操作都不要放在UI线程里处理,因为这样会出现5秒响应机制导致你得程序崩溃。
不知道上面的回答有没有帮到你,如果有,希望多给追加点分数,10分除了我估计没人愿意帮你写这么多字回答的
其次,没太明白你说得处理并发量的目标5000是什么意思。不知道是不是可以理解为你要同时与服务器进行多方数据交互。如果是建议你使用socket通信。并且可以将你得客户端并发处理用异步任务的方式处理(当然多线程也可以,因为异步任务本身就是多线程)。android客户端的耗时操作都不要放在UI线程里处理,因为这样会出现5秒响应机制导致你得程序崩溃。
不知道上面的回答有没有帮到你,如果有,希望多给追加点分数,10分除了我估计没人愿意帮你写这么多字回答的
追问
谢谢你的回答,分数是小事,如果问题解决了,我不会吝啬分的:关于并发这,我还是不太明白:
我的意思是可能存在同一时刻5000人的访问,我之前用socket写过一个小应用,服务端是一个while循环,只要有客户端连接就会新打开一个线程!如果这样做的话,在服务器上同时跑几百条甚至更多的线程它能不能承受的了,如果不这样做还有什么更好的解决办法吗?线程池?还是别的
追答
哦。你得意思我明白了,如果需要处理这种并发操作的话,劝你放弃使用socket。改用http通信。因为不管你同时有几个用户并发访问,本身socket就是很耗费资源的,它建立通信管道一直占用服务器资源,就算起线程,或者用线程池,socket的通信管道依然在。http通信本身就是个并发的操作。因为你每次访问的时候httpservlet都会分配给你不同的对象进行通信。并且跟socket比http不会占用那么多系统资源。像你说得那个数量5000.用socket服务器肯定受不了。建议用httpserlet。很好用。跟socket其实差不多。但很省资源。
希望能帮到你。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询