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开班时间
-
北京 丨 11月27日
火速抢座 -
上海 丨 11月27日
火速抢座 -
广州 丨 11月27日
火速抢座 -
兰州 丨 11月27日
火速抢座 -
杭州 丨 11月27日
火速抢座 -
南京 丨 11月27日
火速抢座 -
沈阳 丨 11月27日
火速抢座 -
大连 丨 11月27日
火速抢座 -
长春 丨 11月27日
火速抢座 -
哈尔滨 丨 11月27日
火速抢座 -
济南 丨 11月27日
火速抢座 -
青岛 丨 11月27日
火速抢座 -
烟台 丨 11月27日
火速抢座 -
西安 丨 11月27日
火速抢座 -
天津 丨 11月27日
火速抢座 -
石家庄 丨 11月27日
火速抢座 -
保定 丨 11月27日
火速抢座 -
郑州 丨 11月27日
火速抢座 -
合肥 丨 11月27日
火速抢座 -
太原 丨 11月27日
火速抢座 -
苏州 丨 11月27日
火速抢座 -
武汉 丨 11月27日
火速抢座 -
成都 丨 11月27日
火速抢座 -
重庆 丨 11月27日
火速抢座 -
厦门 丨 11月27日
火速抢座 -
福州 丨 11月27日
火速抢座 -
珠海 丨 11月27日
火速抢座 -
南宁 丨 11月27日
火速抢座 -
东莞 丨 11月27日
火速抢座 -
贵阳 丨 11月27日
火速抢座 -
昆明 丨 11月27日
火速抢座 -
洛阳 丨 11月27日
火速抢座 -
临沂 丨 11月27日
火速抢座 -
潍坊 丨 11月27日
火速抢座 -
运城 丨 11月27日
火速抢座 -
呼和浩特丨11月27日
火速抢座 -
长沙 丨 11月27日
火速抢座 -
南昌 丨 11月27日
火速抢座 -
宁波 丨 11月27日
火速抢座 -
深圳 丨 11月27日
火速抢座 -
大庆 丨 11月27日
火速抢座