Socket编写一个简易的聊天室

首先实现的功能:

1.群聊。一个服务器端可以承载多个客户端(用户)来请求访问。服务器端对其请求做出处理,并转发给其他的客户端(用户)。

2.私聊。因为是控制台输入输出,所以私聊格式为:@xxx:   。而且自己给私发服务器端不响应。

 

思路:1.用ServerSocket模拟服务器端,并且开启多线程的调用accept()等待客户端连接。

           2.Socket模拟客户端。使用多线程达到一边发一边收。 

           3.数据的传输用到的IO流DataInputStream(client.getInputStream())和DataOutputStream(client.getOutputStream())

           4.TCP底层原理不再阐述。不懂:https://blog.csdn.net/qq_40301026/article/details/88623353

           5.群聊功能:每来一个客户端,将其姓名作为key,客户端的对象地址作为value,,存在ConcurrentHashMap(线程安全)容器里面。当一个客户端发送消息时,服务器端作为中转站,从容器中拿到其他客户端,转发此消息。

           6.私聊:对接收到的客户端消息进行检查,如果符合私聊格式就从容器中拿到私聊对象,转发给对方。

 

先来看看实现的效果????

*启动一个服务器端(IP地址本机,端口号:8848)和三个客户端。

 *三个客户端加入聊天室

* 群聊

 

*私聊:

 *离开:

 

代码:

服务器端:

package cn.liu.chat03;

import java.io.IOException;
import java.net.
  • 6
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值