Android Socket网络编程
林志红
(北京信息职业技术学院)
摘 要:Android Socket 应用程序中把数据发送和数据接收功能放在两个不同的
子线程中,这样可以做到发送与接收并发处理,互不干扰。在数据接收子线程中通
常要把接收到的数据封装在消息中,通过 Handler 的 sendMessage 方法发送给
主线程,在主线程中要重载 Handler 的 handleMessage 方法,从接收到的消息
中取出来自子线程的数据,用来更新主线程中的 UI 组件。
关键词:Android,Socket,网络编程,Handler,网络访问权限
Android 系统目前已经充斥了我们生活的各个方面,除手机、平板电脑、电视盒子、游戏
机、手表和车载系统以外还有其他很多设备可能运行着 Android 系统。Android 系统主要应用
于嵌入式系统产品,而当今的嵌入式产品往往对于网络有较强的依赖性,一些复杂的功能往
往需要服务器的支持,因此学好 Android 网络编程对于从事嵌入式产品开发非常有益处。
1 编程方法
通过前面的学习我们了解到,Android Socket 网络编程方法与标准的 Java Socket 网络编
程方法基本上是一致的,不同之处主要体现在以下三点:
1. Socket 在 Android 上的编程应用中,都是作为客户端来使用
2. 访问网络不能在主线程中进行,而子线程不能访问主线程中的组件,这就涉及到了
Handler 的消息传递机制的使用
3. 在编写访问网络的应用程序时,要设定相应的网络访问权限
产生这些不同点的原因在于 Android 平台上网络程序与 SE 平台上网络程序的应用场景
不同。今天我们就针对 Android 平台来学习 Socket 网络编程技术。
首先来回顾一下 Java Socket 网络通信的基本过程。
在客户机/服务器模式中, 服务器处于被动的一方,始终在监听服务端口。如果要发起一
次通信,客户端需要主动创建与服务器连接的 Socket 套接字, 向服务器发出连接请求,服务
器端收到了客户端的请求, 也会创建与客户连接的 Socket. Socket 可看作是通信连接两端的收
发器, 服务器与客户端都通过 Socket 来收发数据。
这里我们看到,客户端程序必做的三件事是:
1)发连接请求
2)接收数据
3)发送数据
按照 Android 平台的要求,这三件事不能放在 UI 线程中来做,必须单独启动线程来完
成网络相关操作。联网线程从服务器获取数据后,必须通过 Android 平台的 Hnadler 消息传递
机制把读取到的数据发送给 UI 线程,由 UI 线程来更新相关界面组件的内容。
2 编程实例
下面,我们就根据这些原则来做一个实际的例子。
例:手机客户端连上服务器后,能够和服务器端聊天。两端都可以发送文本,文本能够
在另一端收取之后显示。
1 / 10
Android Socket 网络编程