韩顺平老师离线消息(多条离线消息) 以下代码均属个人意见。服务器客户端统一新增Message类StringMESSAGE_DOWN_ONLINE10;服务器这边是这样设计的QQview中mainView方法。我在二级菜单中加了第五条用来显示。System.out.println(通讯系统);System.out.println(\t\t1.显示在线列表);System.out.println(\t\t2.群发消息);System.out.println(\t\t3.私聊);System.out.println(\t\t4.发送文件);System.out.println(\t\t5.离线消息查询);System.out.println(\t\t9.退出系统);System.out.println(输入选择:);case5:System.out.println(离线消息);messageClientSerice.sendlixian(userId);break;然后是MessageClientSerice类中新增了sendlixian方法//离线操作publicvoidsendlixian(Stringsender){MessagemessagenewMessage();message.setMestype(MessageType.MESSAGE_DOWN_ONLINE);message.setGetter(sender);try{ObjectOutputStreamobjectOutputStreamnewObjectOutputStream(ManageClientConnetServerThread.getClientConnetServeThread(sender).getSocket().getOutputStream());objectOutputStream.writeObject(message);}catch(IOExceptione){thrownewRuntimeException(e);}}然后是ClientConnetServeThread类中在run里面新增了一个条件语句可以输出多条语句elseif(message.getMestype().equals(MessageType.MESSAGE_DOWN_ONLINE)){for(inti0;imessage.getDownlen();i){System.out.println(message.getDownline()[i]);}}下面是服务器的代码新增了一个ManageDownLine类用来保存离线的信息publicclassManageDownLineimplementsSerializable{privatestaticHashMapString,String[]hashMapnewHashMap();publicstaticString[]getHashMap(Stringuserid){returnhashMap.get(userid);}publicstaticvoidaddhashmap(Stringuserid,String[]content){hashMap.put(userid,content);}}在ServerConnetClientThread类中run方法私聊条件语句中新增一条条件判断用来把每一条离线消息保存到ManageDownLine类的集合中elseif(message.getMestype().equals(MessageType.MESSAGE_COMM_MES)){System.out.println( message.getSender()对message.getGetter()说message.getContent());//在线状态if(ManageClientThreads.getServerConnetClientThread(message.getGetter())!null){ObjectOutputStreamobjectOutputStreamnewObjectOutputStream(ManageClientThreads.getServerConnetClientThread(message.getGetter()).socket.getOutputStream());objectOutputStream.writeObject(message);}elseif(ManageClientThreads.getServerConnetClientThread(message.getGetter())null){//离线操作message.setDownlen(a);for(inti0;ia;i){if(s[i]null){s[i]message.getContent();}}manageDownLine.addhashmap(message.getGetter(),s);}下面这段代码也是在ServerConnetClientThread类中run方法新增离线消息判断然后把message对象发回到客户端elseif(message.getMestype().equals(MessageType.MESSAGE_DOWN_ONLINE)){sManageDownLine.getHashMap(message.getGetter());System.out.println(s[0]);message.setDownline(s);for(inti0;is.length;i){if(s[i]!null){message.setDownlen(message.getDownlen()1);}}ObjectOutputStreamobjectOutputStreamnewObjectOutputStream(ManageClientThreads.getServerConnetClientThread(message.getGetter()).getSocket().getOutputStream());objectOutputStream.writeObject(message);}效果图用户1003下面是用户1004登录后选择5后显示的效果