最近一直在弄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通信与聊天室的实现相关推荐

  1. java socket编程聊天室_Java Socket通信之聊天室功能

    Java Socket通信之聊天室功能 发布时间:2020-10-17 14:36:00 来源:脚本之家 阅读:73 作者:LY_624 本文实例为大家分享了Java Socket聊天室功能的具体代码 ...

  2. 基于Java Socket通信实现聊天室功能

    目录 1.socket简介 2.架构图 3.服务器端详细过程 4.客户端详细过程 5.完整代码 1.socket简介 socket 翻译为"套接字",是计算机之间基于tcp协议的一 ...

  3. Android Socket通信(五) -- 实现一个多人聊天室

    系列文章: Android Socket 系列更新计划 Android Socket通信(一) – 初识与相遇 Android Socket通信(二) --UDP,单播,广播和多播(组播) Andro ...

  4. android传递socket对象,Android Socket通信详解

    一.Socket通信简介 Android与服务器的通信方式主要有两种,一是Http通信,一是Socket通信.两者的最大差异在于,http连接使用的是"请求-响应方式",即在请求时 ...

  5. python socket 网络聊天室_Python基于Socket实现简单聊天室

    本文实例为大家分享了Python基于Socket实现简单聊天室,供大家参考,具体内容如下 服务端 #!/usr/bin/env python # -*- coding: utf-8 -*- # @Ti ...

  6. android socket 简易聊天室 java服务器,Android Socket通信实现简单聊天室

    socket通信是基于底层TCP/IP协议实现的.这种服务端不需要任何的配置文件和tomcat就可以完成服务端的发布,使用纯java代码实现通信.socket是对TCP/IP的封装调用,本身并不是一种 ...

  7. Netty+Android搭建一个简易聊天室(实现群聊和私聊)

    零,前言 JRBM项目中无论是好友私聊,公开聊天室,还是比赛平台都需要用到长连接,之前没有接触过网络通信等知识,更别说框架了,因此直接上手netty确实有些困难,在前期主要是在b站上看(https:/ ...

  8. android socket通信如何抓取,安卓Socket通信实例(客户端、服务端)

    安卓Socket通信实例 本文摘自:https://whatsblog.icu/index.php/Android/17.html 1.Socket通信必须知道的地方 1.首先,Socket通信采用T ...

  9. C#基于Socket的简单聊天室实践

    序:实现一个基于Socket的简易的聊天室,实现的思路如下: 程序的结构:多个客户端+一个服务端,客户端都是向服务端发送消息,然后服务端转发给所有的客户端,这样形成一个简单的聊天室功能. 实现的细节: ...

最新文章

  1. bzoj1588[HNOI2002]营业额统计——双向链表
  2. 【音频处理】Melodyne 选择工具使用 ( 主工具简介 | 修改音高 | 自动吸附 | 音符长度修改 | 长度自动吸附 | 设置音符分离线 | 设置片段分离线 )
  3. 25个吸引眼球的广告设计
  4. Android隐藏状态栏、导航栏
  5. python之时间日期time
  6. php ldap 模块,不重新编译为PHP增加LDAP模块的支持
  7. python里hist图状图_直方图中具有阶梯填充histtype的matplotlib散点图hist
  8. apache字体文件跨域_在CabloyJS中将Webpack生成的文件自动上传到阿里云OSS
  9. 文件编码 linux,【原创】Linux基础之文件编码
  10. html 文章阅读次数,关于浏览次数和浏览次数缓存的问题
  11. unique path 阶梯
  12. 斗地主服务器维护中,天天斗地主游戏问题解决方法
  13. Alcor(安国)AU6983量产工具(100421)量产成功教程
  14. react 脚手架配置代理
  15. 工作绩效数据、工作绩效信息、工作绩效报告
  16. 04.修改Docker镜像源地址为网易镜像源地址
  17. 中国互联网创业者的困境
  18. iPhone4 Siri
  19. Android 调试桥
  20. 你必须要知道CNN模型:ResNet

热门文章

  1. 基于国产CH32V307单片机的图像混沌加密
  2. java 多线程 动画_Java多线程实现简单动画(小球运动)效果
  3. 5G是什么?一则视频听听专家怎么通俗讲解
  4. Multi-Channel PCe QDMARDMA Subsystem
  5. 美1月PCE物价指数创38年新高 现货金价跌跌不休
  6. 《云友必看》有道云笔记快捷键
  7. 前端背景图放置_前端开发关于网页背景图片的缩放自适应及组合形成背景图的问题...
  8. 用WinServer?第一步,得看版本!
  9. Ubuntu、vim部分常用快捷键
  10. MSP430 ADC模数例程