`
1140566087
  • 浏览: 547705 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
博客专栏
2c4ae07c-10c2-3bb0-a106-d91fe0a10f37
c/c++ 入门笔记
浏览量:18076
3161ba8d-c410-3ef9-871c-3e48524c5263
Android 学习笔记
浏览量:309479
Group-logo
J2ME 基础学习课程集
浏览量:17993
A98a97d4-eb03-3faf-af96-c7c28f709feb
Spring 学习过程记录...
浏览量:17195
社区版块
存档分类
最新评论

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

分享到:
评论

相关推荐

    多线程与Socket联合使用案例源码

    该资源模拟的是客户端与服务器的数据交互,请求与响应的过程以及数据的传递,用多线程实现!

    Android与PC机 Socket 多线程通信经典案例,移动开发必备代码

    Android与PC机 Socket 多线程通信,测试没问题,移动开发必备代码

    android编程之多线程编程实例分析

    本文实例讲述了android编程之多线程编程实现方法。分享给大家供大家参考。具体分析如下: 该功能与前面《android开发socket编程之udp发送实例分析》中一样,当按下键后,发送文本框中数据给PC。不同的是把发送数据的...

    基于Socket的Android聊天室

    Socket通信是网络通信中最常用的技术之一,通过Socket建立的可靠连接,可以让多个终端与服务器保持通信,最典型的应用是建立一个多人聊天程序。本实例使用ServerSocket建立聊天服务器。将服务器端所有的通讯线程保存...

    Android Socket实例

    Android Socket实例 多线程实现监听、发送、接收消息。

    android4.0_Socket和PC通信

    刚刚结束android这两天从网上找了很多关于Socket通信的例子,结果都是不成功,自己查了很多资料,发现android4.0不能再主线程中穿件socket实例,最后只能创建一个新的线程创建socket实例了。测试成功,特来分享

    Android开发案例驱动教程 配套代码

    8.1 多线程案例--计时器 155 8.2 线程概念 156 8.2.1 进程概念 156 8.2.2 线程概念 156 8.3 Java中的线程 157 8.3.1 Java中的实现线程体方式1 157 8.3.2 Java中的实现线程体方式2 160 8.3.3 Java中的实现线程...

    android开发资料大全

    在Android中实现多线程断点下载 Android提高篇内容整理 android移动开发案例精选 Android通过画线实现button效果 Android如何防止apk程序被反编译 Android 之 AIDL 和远程 Service 调用 Android 相对布局技巧 ...

    android开发揭秘PDF

    2.3.2 运行HelloAndroid及模拟器的使用 2.3.3 调试HelloAndroid 2.4 小结 第二部分 基础篇 第3章 Android程序设计基础 3.1 Android程序框架 3.1.1 Android项目目录结构 3.1.2 Android应用解析 3.2 Android的生命...

    疯狂Android讲义源码

     10.1.3 绑定本地Service并与之  通信 377  10.1.4 Service的生命周期 381  10.2 跨进程调用Service  (AIDL服务) 382  10.2.1 AIDL服务简介 382  10.2.2 创建AIDL文件 383  10.2.3 将接口暴露给客户端 383...

    《Android应用开发揭秘》源码

     2.3.2 运行HelloAndroid及模拟器的使用  2.3.3 调试HelloAndroid  2.4 小结  第二部分 基础篇  第3章 Android程序设计基础  3.1 Android程序框架  3.1.1 Android项目目录结构  3.1.2 Android应用解析  3.2...

    《Android应用开发揭秘》附带光盘代码.

    《Android应用开发揭秘》全部实例源代码,配合《Android应用开发揭秘》使用 前言  第一部分 准备篇  第1章 Android开发简介  1.1 Android基本概念  1.1.1 Android简介  1.1.2 Android的系统构架  1.1.3 ...

    Android应用开发揭秘pdf高清版

    《Android应用开发揭秘》内容全面,不仅详细讲解了Android框架、Android组件、用户界面开发、游戏开发、数据存储、多媒体开发和网络开发等基础知识,而且还深入阐述了传感器、语音识别、桌面组件开发、Android游戏...

    Android Socket 线程连接openwrt与arduino单片机串口双向通信的实例解析

    废话不多说了,直接给大家贴代码了,具体代码如下所示: package zcd.netanything; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.Socket; ...

    新版Android开发教程.rar

    的 Android SDK 提供了在 Android 平台上使用 JaVa 语言进行 Android 应用开发必须的工具和 API 接口。 特性 • 应用程序框架 支持组件的重用与替换 • Dalvik Dalvik Dalvik Dalvik 虚拟机 专为移动设备优化 • ...

    Android应用开发揭秘

    杨丰盛,Android应用开发先驱,对Android有深入研究,实战经验极其丰富。精通Java、C、C++等语言,专注于移动通信软件开发,在机顶盒软件开发和MTK平台软件开发方面有非常深厚的积累。2007年获得中国软件行业协会...

    疯狂Android讲义.part2

    10.1.3 绑定本地Service并与之 通信 377 10.1.4 Service的生命周期 381 10.2 跨进程调用Service (AIDL服务) 382 10.2.1 AIDL服务简介 382 10.2.2 创建AIDL文件 383 10.2.3 将接口暴露给客户端 383 10.2.4 客户端...

    疯狂Android讲义.part1

    10.1.3 绑定本地Service并与之 通信 377 10.1.4 Service的生命周期 381 10.2 跨进程调用Service (AIDL服务) 382 10.2.1 AIDL服务简介 382 10.2.2 创建AIDL文件 383 10.2.3 将接口暴露给客户端 383 10.2.4 客户端...

Global site tag (gtag.js) - Google Analytics