Chat项目增加输入昵称和私聊功能,秒变约炮神器!
Chat项目增加输入昵称和私聊功能,秒变约炮神器!
大家好,周六复习时发现本周day06课后作业有道题是要增加Chat聊天室输入昵称和私聊功能。我大概写了一下,实现了这两个功能,分享给大家看看哈!
看到题目后我的第一个想法就是将我们保存PrintWriter的List换成Map,这样就可以存储昵称,估计也可以根据昵称进行私聊(还没来得及看作业的代码,估计也是这么实现的吧,可能有更好的办法)。于是我就把List<rintWriter>改为了Map 。key用来存PrintWriter对应的昵称(name)。class Server修改后的代码如下:
01.<p> private synchronized void addOut(String name,PrintWriter out){
02. allOut.put(name,out);
03. }
04. private synchronized void remove(String name){
05. allOut.remove(name);
06. }
07. private synchronized void sendToAll(String message){
08. Set<String> keySet = allOut.keySet();
09. for(String name : keySet){
10. allOut.get(name).println(message);
11. }
12. }
13. private synchronized String sendToSb(String name,String message){
14. PrintWriter out = allOut.get(name);
15. int start1 = message.indexOf("\\" + name +":") + ("\\" + name +":").length();
16. String message1 = message.substring(start1);
17. int end2 = message.indexOf("说");
18. String message2 = message.substring(0, end2);
19. out.println(message2 + "对你说:" + message1);
20. return "你对" + name + "说:" + message1;
21. }
22.</p><p><span></span> </p>
代码中增加了synchronize的sendToSb方法,就是私聊功能。
下面是对这几个方法的调用,稍微有些变化,用正则表达式去除了私聊中输入的无用代码(如:\范老师:),并提取了昵称(name),代码如下:
01.class SendMessageHandler implements Runnable{
02. public void run(){
03. try {
04. OutputStream in = socket.getOutputStream();
05. PrintWriter pw = new PrintWriter(new OutputStreamWriter(in,"UTF-8"),true);
06. Scanner scan = new Scanner(System.in);
07. System.out.println("请输入昵称:");
08. String name = scan.nextLine();
09. pw.println(name + "上线了!");
10. GetMessageHandler handler = new GetMessageHandler();
11. Thread t2 = new Thread(handler);
12. t2.start();
13. while(true){
14. String message = scan.nextLine();
15. pw.println(name + "说:" + message);
16. }
17. } catch (Exception e) {
18. // TODO Auto-generated catch block
19. e.printStackTrace();
20.
21. }
22.
23. }
24. }
差不多就这些,现在运行一下吧。【免责声明】本文部分系转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,如涉及作品内容、版权和其它问题,请在30日内与我们联系,我们会予以重改或删除相关文章,以保证您的权益!
Java开发高端课程免费试学
大咖讲师+项目实战全面提升你的职场竞争力
- 海量实战教程
- 1V1答疑解惑
- 行业动态分析
- 大神学习路径图
相关推荐
更多
Java开班时间
-
北京 丨 10月31日
火速抢座 -
上海 丨 10月31日
火速抢座 -
广州 丨 10月31日
火速抢座 -
兰州 丨 10月31日
火速抢座 -
杭州 丨 10月31日
火速抢座 -
南京 丨 10月31日
火速抢座 -
沈阳 丨 10月31日
火速抢座 -
大连 丨 10月31日
火速抢座 -
长春 丨 10月31日
火速抢座 -
哈尔滨 丨 10月31日
火速抢座 -
济南 丨 10月31日
火速抢座 -
青岛 丨 10月31日
火速抢座 -
烟台 丨 10月31日
火速抢座 -
西安 丨 10月31日
火速抢座 -
天津 丨 10月31日
火速抢座 -
石家庄 丨 10月31日
火速抢座 -
保定 丨 10月31日
火速抢座 -
郑州 丨 10月31日
火速抢座 -
合肥 丨 10月31日
火速抢座 -
太原 丨 10月31日
火速抢座 -
苏州 丨 10月31日
火速抢座 -
武汉 丨 10月31日
火速抢座 -
成都 丨 10月31日
火速抢座 -
重庆 丨 10月31日
火速抢座 -
厦门 丨 10月31日
火速抢座 -
福州 丨 10月31日
火速抢座 -
珠海 丨 10月31日
火速抢座 -
南宁 丨 10月31日
火速抢座 -
东莞 丨 10月31日
火速抢座 -
贵阳 丨 10月31日
火速抢座 -
昆明 丨 10月31日
火速抢座 -
洛阳 丨 10月31日
火速抢座 -
临沂 丨 10月31日
火速抢座 -
潍坊 丨 10月31日
火速抢座 -
运城 丨 10月31日
火速抢座 -
呼和浩特丨10月31日
火速抢座 -
长沙 丨 10月31日
火速抢座 -
南昌 丨 10月31日
火速抢座 -
宁波 丨 10月31日
火速抢座 -
深圳 丨 10月31日
火速抢座 -
大庆 丨 10月31日
火速抢座
【热点话题】




400-111-8989
lihm@tedu.cn

