Android Socket通信与聊天室的实现
最近一直在弄socket的通信,在网上也看了很多例子,在这里,想把自己学的给记录下来
首先我们要创建服务器端的程序
创建ServerListener类继承 Thread类 这样我们可以避免堵塞主线程,专门有个线程来等待客户端的连接
public void run() {
int id = 0;
try{
ServerSocket serversocket=new ServerSocket(12345);//监听12345端口
while(true){
Socket socket=serversocket.accept();
chatSocket cs=new chatSocket(socket);
cs.start();//一旦客户端连接上了 重启一个线程来连接客户端客户端
chatManager.getchatManager().add(cs);//将客户端线程加入管理器中
}
}catch(IOException e){
e.printStackTrace();
}
}
创建chatSocket类继承Thread类,每当有新的线程连接上,就创建一个chatSocket的实例,chatSocket类中,有读写功能
public void out(String out){try {socket.getOutputStream().write((out+"\n").getBytes("UTF-8"));} catch (UnsupportedEncodingException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}public void run() {try {BufferedReader br=new BufferedReader(new InputStreamReader(socket.getInputStream(),"UTF-8"));//获取客户端输入流String line=null;while((line=br.readLine())!=null){chatManager.getchatManager().publish(this, line);//每读进一句话就广播一句,实现群发功能}br.close();} catch (UnsupportedEncodingException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}
客户端线程管理类chatManager类,管理所有的线程
private static final chatManager cm=new chatManager();public static chatManager getchatManager(){return cm;}Vector<chatSocket> vector=new Vector<chatSocket>();//创建实现自动增长的对象数组vectorpublic void add(chatSocket cs){vector.add(cs);//将线程加入到管理器中}public void publish(chatSocket cs,String out){for(int i=0;i<vector.size();i++){//遍历vector数组chatSocket cschatSocket=vector.get(i);if(!cs.equals(cschatSocket)){//判断数组是否为本身cschatSocket.out(out);//向每个数组输出字符串}}}
以上就是聊天室服务器端的实现了,我们可以用telnet 去连接服务器,也可以写其他模式的客户端去连接
Android Socket通信与聊天室的实现相关推荐
- java socket编程聊天室_Java Socket通信之聊天室功能
Java Socket通信之聊天室功能 发布时间:2020-10-17 14:36:00 来源:脚本之家 阅读:73 作者:LY_624 本文实例为大家分享了Java Socket聊天室功能的具体代码 ...
- 基于Java Socket通信实现聊天室功能
目录 1.socket简介 2.架构图 3.服务器端详细过程 4.客户端详细过程 5.完整代码 1.socket简介 socket 翻译为"套接字",是计算机之间基于tcp协议的一 ...
- Android Socket通信(五) -- 实现一个多人聊天室
系列文章: Android Socket 系列更新计划 Android Socket通信(一) – 初识与相遇 Android Socket通信(二) --UDP,单播,广播和多播(组播) Andro ...
- android传递socket对象,Android Socket通信详解
一.Socket通信简介 Android与服务器的通信方式主要有两种,一是Http通信,一是Socket通信.两者的最大差异在于,http连接使用的是"请求-响应方式",即在请求时 ...
- python socket 网络聊天室_Python基于Socket实现简单聊天室
本文实例为大家分享了Python基于Socket实现简单聊天室,供大家参考,具体内容如下 服务端 #!/usr/bin/env python # -*- coding: utf-8 -*- # @Ti ...
- android socket 简易聊天室 java服务器,Android Socket通信实现简单聊天室
socket通信是基于底层TCP/IP协议实现的.这种服务端不需要任何的配置文件和tomcat就可以完成服务端的发布,使用纯java代码实现通信.socket是对TCP/IP的封装调用,本身并不是一种 ...
- Netty+Android搭建一个简易聊天室(实现群聊和私聊)
零,前言 JRBM项目中无论是好友私聊,公开聊天室,还是比赛平台都需要用到长连接,之前没有接触过网络通信等知识,更别说框架了,因此直接上手netty确实有些困难,在前期主要是在b站上看(https:/ ...
- android socket通信如何抓取,安卓Socket通信实例(客户端、服务端)
安卓Socket通信实例 本文摘自:https://whatsblog.icu/index.php/Android/17.html 1.Socket通信必须知道的地方 1.首先,Socket通信采用T ...
- C#基于Socket的简单聊天室实践
序:实现一个基于Socket的简易的聊天室,实现的思路如下: 程序的结构:多个客户端+一个服务端,客户端都是向服务端发送消息,然后服务端转发给所有的客户端,这样形成一个简单的聊天室功能. 实现的细节: ...
最新文章
- bzoj1588[HNOI2002]营业额统计——双向链表
- 【音频处理】Melodyne 选择工具使用 ( 主工具简介 | 修改音高 | 自动吸附 | 音符长度修改 | 长度自动吸附 | 设置音符分离线 | 设置片段分离线 )
- 25个吸引眼球的广告设计
- Android隐藏状态栏、导航栏
- python之时间日期time
- php ldap 模块,不重新编译为PHP增加LDAP模块的支持
- python里hist图状图_直方图中具有阶梯填充histtype的matplotlib散点图hist
- apache字体文件跨域_在CabloyJS中将Webpack生成的文件自动上传到阿里云OSS
- 文件编码 linux,【原创】Linux基础之文件编码
- html 文章阅读次数,关于浏览次数和浏览次数缓存的问题
- unique path 阶梯
- 斗地主服务器维护中,天天斗地主游戏问题解决方法
- Alcor(安国)AU6983量产工具(100421)量产成功教程
- react 脚手架配置代理
- 工作绩效数据、工作绩效信息、工作绩效报告
- 04.修改Docker镜像源地址为网易镜像源地址
- 中国互联网创业者的困境
- iPhone4 Siri
- Android 调试桥
- 你必须要知道CNN模型:ResNet