- 关闭连接
二、Android实现Socket的通信
我们在基本了解Socket通信的大致过程和基本概览后下面开始介绍如何在Android上实现它:
1.使用ServerSocket创建TCP服务器端
因为在两个通信实体没有建立虚拟链路之前,必须要有一个通信实体先做出主动姿态,主动接收来自其他通信实体的连接请求,所以我们要先创建一个TCP服务器端来接收连接请求。
Java中能接收其他通信实体连接请求的是ServerSocket,ServerSocket对象用于监听来自客户端的Socket连接,如果没有连接,它将一直处于等待状态。ServerSocket包含一个监听来自客户端请求的方法。
- Socket accept():如果接收到一个客户端Socket的连接请求,该方法将返回一个与连接客户端Socket对应的Socket;否则该方法将一直处于等待状态,线程也被阻塞。
为了创建ServerSocket对象,ServerSocket类提供了一下几个构造方法:
-
ServerSocket(int port):用指定的端口port来创建一个ServerSocket。该端口应该有一个有效的端口整数值0~65535。
-
ServerSocket(int port,int backlog):增加一个用来改变连接队列长度的参数backlog。
-
ServerSocket(int port,int backlog,InetAddress localAddr):在机器存在多个IP地址的情况下,通过localAddr这个参数来指定将ServerSocket绑定到指定的IP地址。
在ServerSocket使用完毕后,应使用ServerSocket的close()方法来关闭该ServerSocket。在通常情况下,服务器不应该只接受一个客户端请求,而应该不断地接收来自客户端的所有请求,所以Java程序通常会通过循环不断地调用ServerSocket的accept()方法,如以下代码片段所示:
//创建一个ServerSocket,用于监听客户端的Socket请求
ServerSocket ss=new ServerSocket(30000 );
//采用循环不断接受来自客户端的请求
while (true){
//每当接收到客户端Socket的请求时,服务器端也对应产生一个Socke