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,一经查实,立即删除!

相关文章

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,不变或取反。 按位枚举,贪心即可。 对于不变的,我们…

统计一行文本的单词个数_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解…

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

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

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

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

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. 评估模型…

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系统数据库&…

svn新建仓库

1昨天需要在服务器上新建一个仓库,解决方法是把已有的仓库拷贝出来,库删除在放进去 2然后今天想看看有没有命令的方法 find / -name project 首先查看一下项目的位置 3创建仓库 svnadmin create /mnt/raid1/huge/project/test 4cd test Ls 5vi authz…

MySql数据库索引原理

写在前面:索引对查询的速度有着至关重要的影响,理解索引也是进行数据库性能调优的起点。考虑如下情况,假设数据库中一个表有10^6条记录,DBMS的页面大小为4K,并存储100条记录。如果没有索引,查询将对整个表进…

java实现坐标图进行拖拉拽放_js实现限定区域范围拖拉拽效果

本文实例为大家分享了js实现限定区域范围拖拉拽的具体代码,供大家参考,具体内容如下需要在范围内拖拉拽,之前看来许多资料觉得都不是特别满足要求,今天自己写了一个,通过监听鼠标按下、鼠标抬起、鼠标移动事件来控制代…

mysql + keepalived高可用

1上次说过了mysql的主从配置 tar zxf keepalived-1.2.7.tar.gz cd keepalived-1.2.7 yum install gcc gcc-c yum install kernel-devel -y 2报错 configure: error: Popt libraries is required yum install popt-devel 3继续执行 ./configure --with-kernel-dir/usr/src/kerne…

java+向前进一_Java 线程基础

前言线程并发系列文章:熟练掌握线程原理与使用是程序员进阶的必经之路,网上很多关于Java线程的知识,比如多线程之间变量的可见性、操作的原子性,进而扩展出的Volatile、锁(CAS/Synchronized/Lock)、信号量等知识。有些文章只说笼统…

电子报账系统源码_网上商城系统建设心得,轻松搞定选择困难

当前,我们正处于一个互联网飞速发展的时代,特别是互联网电商的出现,给我们的生活带来了翻天覆地的变化,不出家门便可购买各种商品,不用再到处奔走寻找,通过网络便可快速下单,然后坐等送货上门。…

源码安装httpd

1 tar -xvf apr-1.7.0.tar.gz tar -xvf apr-util-1.6.1.tar.gz tar -xvf httpd-2.2.6.tar.gz 2cd apr-1.7.0 ./configure Make Make install 3cd apr-util-1.6.1 ./configure --with-apr/usr/local/apr 解决rpm -ivh libexpat-devel-2.2.4-alt1.i586.rpm tar -xvf expat-2.2…

python如何运行py程序_如何用Python汇款:Web3.py教程

Python开发人员对于以太坊和区块链库的技术练习。警告:下面的教程包含这些元素:显式加密、点对点金融服务以及可能的违规行为。这些例子仅仅是为了说明Python区块链的强大功能和便捷性。嗨,Pythoners,你们好!我真的很喜…

基于域名的apache服务器

1承接上个博客说的&#xff0c;咱们继续扩展 Cd /usr/local/apache2/conf /usr/local/apache2/conf/extra扩展文件 Vi httpd-vhosts.conf <VirtualHost *:80> ServerAdmin 1327629137qq.com DocomentRoot “/data/webapps/www1” ServerName www.wugk1.com <Directory…

MySQL 数据库修改登录密码

MySQL 数据库修改登录密码、、 -------- mysql修改密码 默认的密码为空&#xff1a;mysql -u root -p第一次更改密码&#xff1a;mysqladmin -uroot -p password xhyEnter password: xhy 第二次更改密码&#xff1a; mysqladmin -uroot -pxhy password xhy1mysql -u root -p En…