android4.0 socket 例程 例子 源代码
在Android开发中,Socket编程是实现设备间网络通信的基础,特别是在构建服务器-客户端应用程序时。在Android 4.0(API级别14)及以上版本中,开发者可以利用Java的Socket API来实现网络通信功能。本篇文章将深入探讨Android 4.0中的Socket编程,以及如何通过示例代码进行实践。 Socket是网络编程中的一种接口,它允许两个程序通过网络交换数据。在Android中,我们可以使用`java.net.Socket`类来创建和管理Socket连接。让我们了解Socket的基本概念: 1. **ServerSocket**: 服务器端创建的Socket,用于监听特定端口上的连接请求。一旦有客户端连接,就会创建一个新的Socket实例。 2. **Socket**: 客户端创建的Socket,用于连接到服务器的特定端口。一旦连接成功,双方可以通过输入/输出流进行数据传输。 以下是一个简单的Android Socket通信流程: 1. **服务器端**: - 创建`ServerSocket`并绑定到特定端口。 - 调用`accept()`方法开始监听连接请求。当客户端连接时,这个方法会阻塞直到连接建立,并返回一个新的`Socket`对象。 - 使用`Socket`的`getInputStream()`和`getOutputStream()`方法获取输入/输出流,进行数据读写。 2. **客户端**: - 创建`Socket`对象,调用`connect()`方法连接到服务器的IP地址和端口。 - 同样通过`getInputStream()`和`getOutputStream()`获取输入/输出流,进行数据交互。 在Android 4.0中,你需要在主线程之外执行Socket操作,因为它们可能会阻塞并导致ANR(应用无响应)错误。因此,通常我们会使用AsyncTask或者IntentService来处理网络通信。 下面是一个简单的服务器端示例: ```java public class ServerActivity extends AppCompatActivity { private ServerSocket serverSocket; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_server); try { serverSocket = new ServerSocket(8888); Log.d("Server", "Listening on port 8888..."); while (true) { Socket clientSocket = serverSocket.accept(); new Thread(new ClientHandler(clientSocket)).start(); } } catch (IOException e) { Log.e("Server", "Error: " + e.getMessage()); } } // ...其他方法 } class ClientHandler implements Runnable { private Socket clientSocket; public ClientHandler(Socket socket) { this.clientSocket = socket; } @Override public void run() { try { InputStream is = clientSocket.getInputStream(); OutputStream os = clientSocket.getOutputStream(); // 读取客户端发送的数据,写入响应 // ... clientSocket.close(); } catch (IOException e) { Log.e("ClientHandler", "Error: " + e.getMessage()); } } } ``` 客户端示例代码: ```java public class ClientActivity extends AppCompatActivity { private Socket clientSocket; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_client); new Thread(new Runnable() { @Override public void run() { try { clientSocket = new Socket("localhost", 8888); OutputStream os = clientSocket.getOutputStream(); os.write("Hello, Server!".getBytes()); InputStream is = clientSocket.getInputStream(); byte[] buffer = new byte[1024]; int length = is.read(buffer); String response = new String(buffer, 0, length); Log.d("Client", "Received: " + response); clientSocket.close(); } catch (IOException e) { Log.e("Client", "Error: " + e.getMessage()); } } }).start(); } // ...其他方法 } ``` 注意:实际应用中,你需要处理异常,确保资源正确关闭,并且可能需要实现心跳机制、超时处理等高级特性。此外,为了在Android设备上进行网络访问,需要在`AndroidManifest.xml`中添加`<uses-permission android:name="android.permission.INTERNET" />`权限。 Android 4.0中的Socket编程与标准Java Socket编程并无太大区别,但需要考虑到Android的多线程限制和权限管理。通过理解这些基本概念和示例,你可以开始构建自己的网络通信应用程序了。提供的压缩包文件"Socket"可能包含了更多具体的示例代码,供你参考和学习。
- 1
- 粉丝: 0
- 资源: 5
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
- 1
- 2
前往页