import java.awt.List; import java.io.*; import java.util.StringTokenizer; /* * 该类实现对服务器发送的消息进行监听 */ public class Listener extends Thread { BufferedReader br; List onlineUsersList,chatContentList; boolean isClosed=false; FileSender fileSender; //文件传输使用 FileReceiver fileReceiver; VoiceReceive voiceReceive; VoiceSend voiceSend; public Listener(BufferedReader br,List onLineUsersList,List chatContentList) { this.br=br; this.onlineUsersList=onLineUsersList; this.chatContentList=chatContentList; this.start(); } public void run() { String word=null; try { //循环接收服务器端发送来的信息 while (!isClosed && (word = br.readLine()) != null) { //判断其是否是更新在线用户列表的信息 //已修改。由NICKNAME开头,不再有以ONLINEUSERS开头的消息 if(word.startsWith("NICKNAME:")) { word=word.substring(9); onlineUsersList.removeAll(); StringTokenizer st = new StringTokenizer(word); while (st.hasMoreTokens()) { onlineUsersList.add(st.nextToken()); } } //得到服务器端相应过来的目标用户的ip地址 else if(word.startsWith("FILEECHO:")) { word=word.substring(9); this.fileSender.setDescIP(word); } else if(word.startsWith("FLENGTH:")) { String filelength=word.substring(8); ClientFrame.filelength=Long.parseLong(filelength); ClientFrame.bar.setMinimum (0); ClientFrame.bar.setMaximum((int)(ClientFrame.filelength/1024)); } else if(word.startsWith("VOICEECHO:")) { word=word.substring(10); this.voiceSend.setIP(word); ClientFrame.voiceSend.start(); ClientFrame.voiceReceive.start(); ClientFrame.jButton13.setText("结束语音"); ClientFrame.jButton13.setVisible(true); ClientFrame.jButton12.setVisible(false); this.chatContentList.add("你与"+onlineUsersList.getSelectedItem()+"开始语音聊天!"); } else if(word.startsWith("VOICE:")) { ClientFrame.jButton13.setText("结束语音"); ClientFrame.jButton13.setVisible(true); ClientFrame.jButton14.setVisible(true); ClientFrame.jButton12.setVisible(false); word=word.substring(6); ClientFrame.VSip=word; this.chatContentList.add("你与"+onlineUsersList.getSelectedItem()+"开始语音聊天!"); } else if(word.startsWith("VOICEEND:")) { ClientFrame.jButton12.setVisible(true); ClientFrame.jButton13.setVisible(false); ClientFrame.jButton14.setVisible(false); ClientFrame.jButton13.setText("拒绝语音"); ClientFrame.voiceSend.stop(); ClientFrame.voiceReceive.stop(); ClientFrame.VSip=""; ClientFrame.jButton14.setVisible(false); this.chatContentList.add("你与"+onlineUsersList.getSelectedItem()+"聊天结束!"); } else { //否则就将其打到交谈信息里 this.chatContentList.add(word); } } } catch (IOException ex) { isClosed=true; } } public void destroy() { try { isClosed=true; } catch (Exception ex) { } } public void setFileSender(FileSender fs) { this.fileSender=fs; } public void setFileReceiver(FileReceiver fr) { this.fileReceiver=fr; } public void setVoiceSend(VoiceSend vs) { this.voiceSend=vs; } public void setVoiceReceive(VoiceReceive vr) { this.voiceReceive=vr; } }
最近下载更多
游弋time1105 LV1
5月15日
微信网友_6444139264921600 LV6
2023年4月29日
Sopuding LV1
2022年7月16日
tomtom113 LV2
2022年6月9日
ewan007 LV30
2022年4月21日
tdcq123 LV14
2022年3月13日
双方各何必呢 LV13
2021年12月20日
曹思辰 LV6
2021年11月21日
阳光正好 LV2
2021年10月29日
1005948011 LV7
2021年6月1日
最近浏览更多
yzj880427
10月12日
暂无贡献等级
444105047 LV6
6月25日
taoshen95 LV15
6月18日
暂无贡献等级
ntboss2002 LV3
5月3日
1112WHQ LV7
2023年11月3日
yuchunxing LV1
2023年9月2日
2017143155 LV12
2023年6月24日
lynn_zhou LV1
2023年5月30日
微信网友_6444139264921600 LV6
2023年4月29日