Android作为Socket服务器端技术上其实没什么好说的,Java有ServerSocket包,直接就能够实现服务器端编程,一般作为Java语言Socket编程典型实例和客户端编程在一起讲的。

但是,在Android开发中,很少将Android作为Socket服务器端。其中原因是:作为服务器端的一般条件是拥有固定的IP,然后客户端再根据服务器的IP和端口号连上服务器,但是,一般Android设备无线上网的IP都是运营商分配的,不是静态IP。换句话说,如果运营商给你的平板电脑分配了一个固定的IP,那么Android作为服务器端并且通过路由器连上外网之后那Internet上任何设备都有途径找到你的平板电脑了。

那么Android作为服务器端就没有意义了吗?显然不是。IP不能固定只是针对广域网来说的,但是在局域网中,Android作为服务器还是有很大作用的。服务器可以连接多个客户端,在局域网中形成一个一对多的网络,这在传感网络、监控系统等方面很大的应用空间。其实,在局域网中一对一的Socket编程Server-Client模型中,客户端和服务器端并没有本质上的区别,反正数据收发都是相互的。关键就在于服务器端对多个客户端的情况。比如设计一种Android设备作为局域网服务器端的例子,网络内还有多个客户端,比如多个来自传感器或者其他设备的无线数据,则一台Android设备就能作为监控网络的中心进行全面监控。反过来另一种情况,如果Android作为客户端,则可以有多台分散Android设备,运行同一个程序,同时监控一个服务器的信息,比如一个工作站的工作情况,医院一台监视病人状态的监护仪器上的数据。

我觉得之所以Android设备作为客户端的例子较多,因为现有Android大多具有便携性和移动性,更加适合上述的第二种情况。而且Android作为客户端可以连接不同的服务器,但是作为服务器就被动了。

另外Android设备要设置固定IP很简单,在WiFi设置中点菜单进入高级设置,就能设置静态IP,在局域网中需要与路由在同一段网关内。

今天我也学到一点,不管手头在做多么细节的事,一定要有全局观念和长远规划。比如最近在往一个Android应用中加局域网的网络功能,其实Android作为客户端还是服务器端都是可行的,甚至不通过路由器,Android系统与下位机直连也是可行的,但是真正好的设计不在于仅仅实现目前的功能,还在于考虑今后的发展和整个系统的架构。正如上面所说,作为客户端和服务器是两种完全不同的网络架构,必须考虑到这一点。本人是网络编程菜鸟,如有错谬欢迎指正。

转载于:https://www.cnblogs.com/lcyty/archive/2013/03/14/2958493.html

更多相关文章

  1. haproxy根据客户端浏览器进行跳转
  2. 【安卓笔记】android客户端与服务端交互的三种方式
  3. android手机客户端上传文件,java servlet服务器端接收并保存到服
  4. Android例子—直接通过Binder的onTransact完成跨进程通信
  5. android客户端加密代码
  6. android 利用socket 发送Json数据demo
  7. Android控制台中运行Java程序
  8. 近百个Android优秀开源项目,覆盖Android开发的每个领域
  9. Android作为CXF客户端调用服务端。

随机推荐

  1. 【 Android(安卓)】RecyclerView 使用方
  2. Android 学习记录三:广播
  3. 深入了解Android中的AsyncTask
  4. 如何避免Android内存泄漏——Context
  5. cocos2dx 2.0版本在android下的安装配置
  6. 【Unity与Android】01-Unity与Android交
  7. Android(安卓)实时获取麦克风输入音量的
  8. 阿里Android开发规范:UI 与布局
  9. 换个角度理解Android的AIDL原理
  10. 毕加索的艺术——Picasso,一个强大的Andr