Socket编程---聊天室终极版-私聊&群聊


前言

昨天我写了Socket编程的聊天室项目 点击查看,不过没有放私聊功能,今天来加上

一、私聊对象的指定

想要私聊我们需要先指定一个对象,怎么指定呢,我们想到每一条消息发送都需要进过服务器,我们可以在消息中指定私聊对象
那服务器如何区分对象名称和消息内容的,这里就需要我们来约定一个格式、
此处采用<对象名>@<消息> 的格式

二、程序的改变

应该想到,本次程序代码的改变全部发生在服务器端,只需要对接收的信息做进一步分析,便可以做出私聊还是群聊的动作
首先,建立一个Map,用来存储对象host 以及PrintWriter对象的对应关系
然后在服务器接收到一条消息 后,在原本的判断后面加一句如果line包含“@”就说明这句是私聊信息,代码如下:

else if(line.contains("@")){//私聊
  String[] data=line.split("@");
  String obClient=data[0];
  line=data[1];
  PrivateSend(obClient,line);//这个方法是我抽出来的私聊方法
  continue;//注意私聊的话就到这句结束即可,不需要走下边的群聊全部转发流程
 }

私聊方法PrivateSend()
obClient表示私聊对象的host名称,后面的mes表示要发送的信息

private void PrivateSend(String obClient,String mes){
            PrintWriter printWriter = allSocket.get(obClient);
            printWriter.println("来自"+host+"的私聊:"+mes);//对客户端显示
            System.out.println(host+"对"+obClient+"私聊:"+mes);//对服务器端展示
        }

总结

私聊确实没难度,稍稍掌握一些套路即可,如果你没想法,那你还得学

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值