基于Java+socket实现多线程聊天室-控制台版

一、系统介绍

首先启动server端,然后启动client端。任意一个client发送给server的消息都将会被转发给所有在线的client,实现了一个聊天室功能。

client发送exit指令可以下线,所有的client端,以及server端都会收到它的下线通知。

原理
socket 通信是基于TCP/IP 网络层上的一种传送方式。

首先,服务端初始化ServerSocket,然后对指定的端口(这里是65000)进行绑定,接着对端口进行监听,通过调用accept方法阻塞,此时,如果客户端有一个socket连接到服务端,那么服务端通过监听和accept方法可以与客户端进行连接,就创建了一个客户端线程。

然后就是客户端的启动和连接了,在服务端socket启动之后,启动客户端连接ServerSocket,这里实现了多线程,可以同时连接多个客户端。这里多线程方面使用了线程池,线程池的作用是:

  • 线程复用,减少创建线程耗时;
  • 防止短时间内高并发,指定线程池大小,超过数量将等待,防止短时间创建

大量线程导致资源耗尽,服务挂掉。

二、功能展示

1.运行效果

在这里插入图片描述

三、代码展示

package wechat;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.nio.charset.StandardCharsets;
import java.util.Scanner;
 

import java.io.*;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.util.Scanner
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值