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

Java Socket通信之聊天室功能

发布时间:2020-10-17 14:36:00

来源:脚本之家

阅读:73

作者:LY_624

本文实例为大家分享了Java Socket聊天室功能的具体代码,供大家参考,具体内容如下

Client.java

import java.io.*;

import java.net.*;

import java.util.*;

public class Client {

public int port = 8083;

Socket socket = null;

public static void main(String[] args) {

new Client(); //开始执行

}

public Client() {

try {

socket = new Socket("127.0.0.1", port);

new Cthread().start();

BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));

String msg1;

while ((msg1 = br.readLine()) != null) {

System.out.println(msg1);

}

} catch (Exception e) {

}

}

class Cthread extends Thread {

public void run() {

try {

BufferedReader re = new BufferedReader(new InputStreamReader(System.in));

PrintWriter pw = new PrintWriter(socket.getOutputStream(), true);

String msg2;

while (true) {

msg2 = re.readLine();

pw.println(msg2);

}

} catch (Exception e) {

e.printStackTrace();

}

}

}

}

Server.java

import java.net.*;

import java.io.*;

import java.util.*;

public class Server {

int port;

List clients;

ServerSocket server;

public Server() {

try {

port = 8083;

clients = new ArrayList();

server = new ServerSocket(port);

System.out.println("服务器已启动");

int co=1;

while (true) {

Socket socket = server.accept();

clients.add(socket);

Mythread mythread = new Mythread(socket,co);

co++;

mythread.start();

}

} catch (Exception ex) {

System.out.println("vv");

}

}

public static void main(String[] args) {

new Server();

}

class Mythread extends Thread {

Socket ssocket;

private int count;

private BufferedReader br;

private PrintWriter pw;

public String msg;

public Mythread(Socket s,int c) {

ssocket = s;

count=c;

}

public void run() {

try {

br = new BufferedReader(new InputStreamReader(ssocket.getInputStream()));

msg = "欢迎【" +"Client "+count + "】进入聊天室!当前聊天室有【" + clients.size() + "】人";

sendMsg();

while ((msg = br.readLine()) != null) {

msg = "【" +"Client "+count + "】说:" + msg;

sendMsg();

}

} catch (Exception ex) {

}

}

public void sendMsg() {

try {

System.out.println(msg);

for (int i = clients.size() - 1; i >= 0; i--) {

pw = new PrintWriter(clients.get(i).getOutputStream(), true);

pw.println(msg);

pw.flush();

}

} catch (Exception ex) {

}

}

}

}

运行结果:

85809108978279a4f843d5e9fc9c6894.png

ab756164af0e74e560aa0ed591042780.png

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持亿速云。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/427149.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python计算数组元素的和_python中数组的运算

Python中进行数组的运算需要调用NumPy包。其官网是:http://www.numpy.org/​www.numpy.orgNumPy是Python语言的一个扩充程序库。它支持高级大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。Numpy内部解除了CPython的GIL(全局解释器锁…

linux mysql数据库定时备份

1在linux上面创建一个文件夹,并且进行备份 cd /home mkdir backup cd backup 2创建一个脚本 Vi imaginebase.sh #!/bin/bash mysqldump -uroot -ppassword01! imaginebase > /home/backup/imaginebase_KaTeX parse error: Expected group after _ at position 1…

[NOI2014] 起床困难综合症

水题的题解也水...... 原题链接:洛谷 P2114 [NOI2014]起床困难综合症 位运算每一位之间互不干扰。 经过所有门之后每一位不外乎四种结果:一定是0,一定是1,不变或取反。 按位枚举,贪心即可。 对于不变的,我们…

java调用webroot下的文件_JAVA 访问WebRoot下的目录文件

/*** 获取到webroot里面的数据*/java.net.URL url2 classLoader.getResource("");String ROOT_CLASS_PATH url2.getPath() "/";File rootFile new File(ROOT_CLASS_PATH);String WEB_INFO_DIRECTORY_PATH rootFile.getParent() "/";File w…

统计一行文本的单词个数_word操作技巧:不同情况的文字统计方法

最近有朋友询问,如何快速统计出Word文档的字数?这个问题其实非常简单,但往往是这种最简单的知识容易被大家忽视,因此造成困扰。所以,今天我们将为大家详细介绍几种Word统计文档字数的方法,希望能帮助到你&a…

linux mysql5.6.27源码安装和错误解决

centos mysql5.6.27 1编译安装 先进入到文件放置的路径下 创建一个个文件 #mkdir–p /data/mysql/mysql #mkdir–p /data/mysql/mysqldat 2创建用户和用户组 groupadd mysql useradd -r -g mysql mysql 3赋予数据存放目录权限 chown mysql:mysql -R /data/mysql/mysqldata/ 4解…

java 接口数据类型_Java 数据类型(中): 抽象类与接口

抽象类和接口都是java对事物对象抽象的机制,是多态性的表现。在某些时候它们还可以互换,其实它们还是有区别的。1,抽象类(abstract class):对某些对象的抽象描述的类(对事物对象行为方法的声明,但是却不实现具体的方法内容&#x…

WebApi

WebAPI 和 MVC 的管道不同 1.Restful 架构风格和WebAPI 2.WebAPI 路由&特性路由 3.WebAPI 前后台调用 4.权限认证 5.跨域请求 6.WebAPI 依赖注入&面向切面 7.WebAPI 自动生成文档 .NETRemoting 速度很快 ,平台要求, WebService 跨平台 &#x…

mysql集群和主从区别_搭建MySQL主从集群,主从复制过程中同步延迟问题

上一节我们成功搭建了主从复制、读写分离,实际上并发量和数据量不大的情况下,使用起来也是非常的流畅,无任何问题,可以正常运行了。但是,要保证高可用,高并发的情况,可以写数据库master就有累了…

MySQL之——The slave I/O thread stops because master and slave have equal...

1)操作系统 cat /etc/issue CentOS release 6.6 (Final) Kernel \r on an \m cat /proc/version Linux version 2.6.32-504.el6.x86_64 (mockbuildc6b9.bsys.dev.centos.org) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-11) (GCC) ) #1 SMP Wed Oct 15 04:27:16 UTC 2014 …

数学:乘法逆元-拓展GCD

乘法逆元应用在组合数学取模问题中,这里给出的实现不见得好用 给出拓展GCD算法: 扩展欧几里得算法是指对于两个数a,b 一定能找到x,y(均为整数,但不满足一定是正数) 满足x*ay*bgcd(a,b) gcd(x,y)是指x 与 y的…

java I O类大全_Java I/O最简单的几个类

今天把I/O中最简单的几个类整理了一下,之所以整理最简单的,是因为这样会让我更加快速方便的理顺这里面的东西,以前每一次用的时候都要先百度一下,觉得很烦。首先需要先看一下Read,Write和Stream,那么看下面的图就明确多…

rpm包安装mysql数据库

3.1上传以下两个rpm包到服务器上 MySQL-server-5.6.27-1.el6.x86_64.rpm MySQL-client-5.6.27-1.el6.x86_64.rpm 3.2卸载一个旧的mysql-libs包: rpm -e mysql-libs-5.1.73-3.el6_5.x86_64 --nodeps 3.3开始安装mysql-server服务器端 rpm -ivh MySQL-server-5.6.27…

micropython stm32f407 以太网_[MicroPython]STM32F407开发板DIY声光控开关

1.实验目的1. 学习在PC机系统中扩展简单I/O 接口的方法。2. 进一步学习编制数据输出程序的设计方法。3. 学习光敏模块的工作原理。4. 学习声音的工作原理。5. 学习F40 7Micropython开发板与声音传感器与光敏传感器的接线方法以及利用声音与光控制发光二极管亮灭。2.所需元器件F…

linux mysql数据库备份并删除前一分钟的数据

linux 中mysql数据库定时备份并删除前一分钟的所有数据 #!/bin/bash #mysqldump -uroot -ppassword01! imaginebase > /home/backup/imaginebase_KaTeX parse error: Expected EOF, got # at position 27: …%d_%H%M%S).sql #̲mysqldump -uroo…(date %Y%m%d_%H%M%S).sql.g…

打开 igv java_必备可视化Integrative Genomic Viewer(IGV)

你会用到的网站:写在前面:之前mac不小心升级了一下java,然后igv就不能用了,要写教程必须降级java首先,看官方说明,需要安装Java -8,9以上版本不支持。我的mac不知道什么时候更新到了java 10&…

机器学习项目笔记

项目清单: 1. 商业目标2. 划定问题               监督或非监督,还是强化学习。3. 选择什么算法             回归还是分类, 数据量小可使用单机内存的 批量计算, 数据量大使用分布式的MapReduce 线上计算。4. 评估模型…

sublime配置python环境变量_Sublime Python环境配置

文章主要说明了能让Python的编程者使用更方便的一些设置和调整。Sublime Text简介Sublime Text是一个很棒的编辑器,支持跨平台,有着强大的插件子系统。对于Python开发,有不少插件可以让你开发起来更流畅、更有乐趣。我现在仍然在不同的项目之…

linux mysql主从配置

1准备两台服务器 一台是192.168.118.128 一台是192.168.118.129 2主服务器配置 192.168.118.128 修改my.cnf文件 server-id1 log-binmysql-bin #启动MySQL二进制日志系统, binlog-do-dbourneeddb #需要同步的数据库 binlog-ignore-dbmysql #不同步mysql系统数据库&…

java web.xml 监听器_【JAVA 核心技术】java web 中的监听器

为什么要有监听器?监听器是用来处理一系列事件的java类,可被配置在java web项目中。既然如此,为什么不用代码直接调用监听器?这可能是因为J2EE规范规定的项目工程标准,用web.xml指定监听器,然后服务器中间件如weblogic可以以遵照标…