`
- 浏览:
559056 次
- 性别:
- 来自:
武汉
-
Android 之 多线程与Socket联合使用案例
多线程 和 Socket 的使用介绍
1、产生背景:
实际应用中的客户端可能需要和服务器保持长时间的通信,即服务器需要不断的读取客户端数据,并向客户端写入数据,客户端也需要不断读取服务器数据,并向服务器写入数据;
使用传统的BufferedReader 的readLine 方法读取数据时,在该方法成功返回之前线程被阻塞,程序无法继续执行。基于这个原因,服务器应该为每个Socket 单独启动一条线程,每条线程负责与一个客户端进行通信。
2、案例分析:实现一个简单 C/S 聊天室为例:实现多个客户端通信
项目分析:
因为服务器读啊应该包含多条线程,每个Socket对应一条线程,该线程负责读取Socket对应输入流的数据(从客户端发送来的数据),并将读取到的数据向每个Socket输出来发送一遍(即将一个客户端发送的数据广播给其他的客户端),因此需要在服务器端使用List来保存所有的Socket.
实现步骤:
(1)、定义保存所有Socket 的集合;
(2)、创建ServerSocket 监听;
(3)、采用循环不断接收来自客户端的连接请求;
(4)、将接收客户端请求产生的Socket添加到集合中;
(5)、客户端连接后启动一条线程为该客户服务;
编写服务器端的线程类:
服务器端的线程类不断读取客户的数据,在此声明一个方法来读取客户端的数据,当服务器线程类读取到客户端的数据之后,程序便利Socket 集合,并将该数据向集合中的每一个Socket 发送一次。如果读取数据的过程捕获了异常,那么说明该Socket对应的客户端Socket 出现了问题,程序就将该Socket 从集合合删除;
客户端的实现:
每个客户端包含两条线程:一条负责生成主界面,并响应用户动作,并将输入的数据(从服务器发送过来的数据),并负责将这些数据在主程序界面上显示处理。
源码下载地址:
http://download.csdn.net/detail/zhang583740618/7062177
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
在这个"多线程与Socket联合使用案例"中,我们可以预期以下核心概念: 1. **服务器端**:使用`ServerSocket`类创建一个监听特定端口的服务器,等待客户端连接。一旦有新的连接请求,服务器端会创建一个新的线程来...
以下是关于Android与PC机Socket多线程通信的关键知识点: 1. **Socket基础**:Socket是网络通信中的一个概念,它代表了两台机器间的一个连接端点,允许数据在网络中传输。在Java中,Socket类和ServerSocket类提供了...
在Android平台上进行网络通信时,Socket通信是...在学习和使用这个实例时,可以深入理解TCP连接的建立、数据的封装与解封装,以及Android网络编程的细节。通过实践,你可以更好地掌握这些知识点,并运用到实际项目中。
本教程将详细讲解如何在安卓应用程序之间通过Socket进行通信,并支持多线程处理,以提高效率和响应速度。 首先,我们要理解Socket的基本概念。Socket是网络编程中的一个接口,它允许两台计算机通过网络连接进行数据...
从Android 2.3(Gingerbread)版本开始,为了更好地管理和优化系统资源,特别是考虑到多线程和网络操作的复杂性,Google引入了一些重要的变化,以确保Socket连接的正确性和效率。这些变化主要涉及线程管理和权限控制...
当有客户端连接时,服务器会创建一个新的Socket与之通信。下面是一个简单的服务器端示例: ```java try { // 创建ServerSocket,指定监听的端口号 ServerSocket serverSocket = new ServerSocket(服务器端口号); ...
总的来说,"android socket局域网文件传输131114"项目是一个涵盖Socket通信、多线程、ListView等多种Android核心技术的实例,对于理解和掌握Android网络编程及文件操作具有很高的参考价值。开发者可以通过研究该项目...
- **UDPAndroid2**和**UDPAndroid1**:这两个文件可能是两个不同的实现版本,可能包含了一些特定功能或者优化的实现,例如错误处理、多线程接收、广播消息支持等。 为了深入理解Android中的UDP Socket编程,你可以...
在Android中,我们通常使用java.net.Socket类来创建和管理Socket实例。 **一、设置服务器端** 1. 创建ServerSocket:服务器端需要先开启一个ServerSocket监听特定的端口,等待客户端的连接请求。例如: ```java ...
然而,原生的Socket操作较为繁琐,涉及到异常处理、线程同步等多个层面,对于开发者来说,需要处理的细节较多。 **2. Android-Lemon特性** `Android-Lemon`框架针对这些痛点进行了优化,主要特点如下: - **简单...
在IT领域,网络通信是应用程序之间交互的重要...这个实例涵盖了网络通信、多线程、数据序列化等多个方面,对开发者来说是一个很好的学习和实践平台。通过学习和理解这些内容,开发者可以构建更复杂的跨平台网络应用。
在实际应用中,我们可能还需要处理多线程问题。服务器端在处理多个客户端连接时,通常为每个连接创建一个新的线程,避免阻塞其他连接。客户端通常在主线程之外开启新的线程进行Socket通信,以免影响UI的响应。 以下...
2. 并发处理:如果服务器需要同时处理多个客户端连接,需要考虑多线程或异步处理。 3. 数据编码:确保客户端和服务器之间数据编码一致,避免乱码问题。 4. 数据包边界:由于网络传输的无界性,需要定义数据包边界,...
总的来说,基于Socket的Android手机视频实时传输涉及到Android的多线程编程、网络编程、视频处理等多个技术领域,需要对这些知识有深入的理解。通过合理的架构设计和优化,我们可以创建一个高效、稳定且用户体验良好...
8. **多线程**:如果服务器需要同时处理多个客户端连接,可能需要使用多线程技术,每个客户端连接在一个独立的线程中处理。 9. **IP和端口**:确保PC服务器的IP地址是可访问的,如公网IP或者通过内网穿透工具映射的...
在“多线程连接”中,我们可以创建多个`TIdTCPClient`实例,每个实例在一个独立的线程中运行,这样可以并发地向多个服务器发送数据或同时与多个服务器保持连接。为了实现多线程,Delphi提供了`TThread`类,允许我们...
1. 创建Socket:Android应用中,我们使用`java.net.Socket`类来创建Socket实例,连接到服务器的特定IP地址和端口号。 2. 输入/输出流:Socket建立连接后,我们需要使用输入流(InputStream)读取服务器发送的数据,...
- **多线程**:为了保证用户界面的响应性和避免阻塞,通常会在服务器端和客户端都使用多线程处理Socket通信,主线程负责UI更新,子线程处理网络数据交换。 - **数据解析**:消息通常以字符串或特定格式(如JSON)...
在Android Studio中,使用Socket进行手机间的App通信是一种常见的网络编程技术,主要应用于设备之间的实时数据交换,例如游戏对战、文件传输等场景。Socket基于TCP/IP协议,为应用程序提供了低级别的、原始的套接字...
在Android中,我们可以使用Java的内置Socket类来实现这一功能。 要构建一个Android局域网Socket通信应用,我们通常会经历以下几个步骤: 1. **创建ServerSocket**:在服务端,我们需要创建一个ServerSocket实例,...