Android Socket 简单介绍
发布人:shili8
发布时间:2025-03-15 17:15
阅读次数:0
**Android Socket 简介**
在 Android 开发中,Socket 是一种用于网络通信的 API。它允许应用程序与服务器或其他设备进行数据交换。Socket 是一个非常重要的组件,几乎所有的网络应用都需要使用它。
**什么是 Socket?**
Socket(套接字)是一种抽象层,它使得两个独立的进程之间可以通信。Socket 提供了一个接口,使得应用程序可以发送和接收数据包。Socket 可以理解为一个虚拟的通讯管道,通过这个管道,可以传递数据。
**Android Socket 的基本概念**
在 Android 中,Socket API 提供了两个主要类:`Socket` 和 `ServerSocket`。
* `Socket`:用于客户端连接服务器。
* `ServerSocket`:用于服务器端监听客户端的连接请求。
**创建 Socket**
要使用 Socket,我们需要创建一个 Socket 对象。下面是示例代码:
javaimport android.os.Bundle; import android.util.Log; import java.net.Socket; import java.net.UnknownHostException; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 创建 Socket 对象 try { Socket socket = new Socket("192.168.1.100",8080); // IP 和端口号 Log.d("MainActivity", "Socket created successfully"); // 使用 Socket 进行通信... } catch (UnknownHostException e) { Log.e("MainActivity", "Unknown host exception: " + e.getMessage()); } catch (IOException e) { Log.e("MainActivity", "IO exception: " + e.getMessage()); } } }
**创建 ServerSocket**
要使用 ServerSocket,我们需要创建一个 ServerSocket 对象。下面是示例代码:
javaimport android.os.Bundle; import android.util.Log; import java.net.ServerSocket; import java.net.Socket; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 创建 ServerSocket 对象 try { ServerSocket serverSocket = new ServerSocket(8080); // 端口号 Log.d("MainActivity", "ServerSocket created successfully"); while (true) { Socket socket = serverSocket.accept(); // 等待客户端连接 Log.d("MainActivity", "Client connected: " + socket.getInetAddress()); // 使用 Socket 进行通信... socket.close(); } } catch (IOException e) { Log.e("MainActivity", "IO exception: " + e.getMessage()); } } }
**Socket 通信示例**
下面是一个简单的 Socket 通信示例:
javaimport android.os.Bundle; import android.util.Log; import java.io.IOException; import java.net.Socket; import java.nio.charset.StandardCharsets; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 创建 Socket 对象 try { Socket socket = new Socket("192.168.1.100",8080); // IP 和端口号 Log.d("MainActivity", "Socket created successfully"); // 发送数据 String data = "Hello, Server!"; byte[] bytes = data.getBytes(StandardCharsets.UTF_8); socket.getOutputStream().write(bytes); Log.d("MainActivity", "Data sent: " + data); // 接收数据 byte[] receivedBytes = new byte[1024]; int bytesRead = socket.getInputStream().read(receivedBytes); String receivedData = new String(receivedBytes,0, bytesRead, StandardCharsets.UTF_8); Log.d("MainActivity", "Received data: " + receivedData); // 关闭 Socket socket.close(); } catch (UnknownHostException e) { Log.e("MainActivity", "Unknown host exception: " + e.getMessage()); } catch (IOException e) { Log.e("MainActivity", "IO exception: " + e.getMessage()); } } }
**总结**
在 Android 中,Socket 是一种用于网络通信的 API。它允许应用程序与服务器或其他设备进行数据交换。通过使用 Socket,我们可以创建客户端和服务器端连接,并进行数据交换。在本文中,我们介绍了 Socket 的基本概念、创建 Socket 和 ServerSocket 的示例代码,以及一个简单的 Socket 通信示例。