安卓 socket开发指的是在安卓系统中使用socket API实现网络通信。Socket是网络通讯中最重要的一种方式,其本质是一个对TCP/IP协议的封装。通过Socket可以在不同的主机之间实现通讯,实现网络编程。
Socket通讯分为客户端和服务器端通讯两个角色。在安卓系统中使用socket API实现网络通信时,需要引入Java语言中的java.net包下的Socket类与ServerSocket类。
首先,客户端需要与服务器建立连接。在安卓中可以使用Socket类的构造方法来创建一个Socket对象,该对象包含了目标IP地址与端口号信息。例如,以下代码用于创建Socket并连接服务器:
```
Socket socket = new Socket("192.168.1.100", 8080);
```
其中,"192.168.1.100"为服务器IP地址,8080为服务器监听端口号。
接下来,客户端可以使用输入输出流来向服务器发送数据或从服务器接收数据。例如,在客户端向服务器发送一段字符串信息的示例代码如下:
```
Socket socket = new Socket("192.168.1.100", 8080);
OutputStream os = socket.getOutputStream();
String msg = "Hello Server!";
os.write(msg.getBytes());
os.flush();
socket.shutdownOutput();
socket.close();
```
以上代码中,获取Socket对象与之前相同,使用getOutputStream()方法获取输出流并封装信息,通过write()方法发送数据,使用shutdownOutput()方法告诉服务器数据发送完成并关闭输出流。最后关闭Socket对象即可。
接着,服务器端需要监听客户端连接请求并接收客户端发送的数据。在安卓中可以使用ServerSocket类来创建服务器端并启动监听。例如,以下代码用于创建并启动服务器端的监听程序:
```
ServerSocket serverSocket = new ServerSocket(8080);
Socket socket = serverSocket.accept();
InputStream is = socket.getInputStream();
byte[] buffer = new byte[1024];
int len;
while((len = is.read(buffer)) != -1) {
System.out.println(new String(buffer, 0, len));
}
is.close();
socket.close();
serverSocket.close();
```
其中,8080为服务器监听端口号。使用accept()方法接收客户端连接请求,使用getInputStream()方法获取输入流并循环读取输入流中的数据。当输入流中的数据被读取完毕时,使用close()方法关闭输入流、Socket对象和ServerSocket对象。
以上便是安卓 socket开发的基本原理和实现过程。当然,安卓 socket开发中还有许多高级用法和技巧,例如线程池的使用、UDP通信等等,需要进一步深入学习与实践。