📄 listener.java
字号:
package chatnew;
import java.net.*;
import java.awt.List;
import java.io.*;
import java.util.StringTokenizer;
/**
* <p>Title: </p>
*
* <p>Description: </p>
*
* <p>Copyright: Copyright (c) 2005</p>
*
* <p>Company: </p>
*
* @author not attributable
* @version 1.0
*/
public class Listener extends Thread {
BufferedReader br;
List onlineUsersList,chatContentList;
boolean isClosed=false;
//文件传输用:
FileSender fileSender;
FileReceiver fileReceiver;
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);
ChatTookit.updateOnLineUsersList(onlineUsersList,word);
}
//得到服务器端相应过来的目标用户的ip地址
else if(word.startsWith("FILEECHO:")){
word=word.substring(9);
this.fileSender.setDescIP(word);
}
//得到服务器端传送来的文件传送完毕的相应
else if(word.startsWith("FILEFINISH:")){
word=word.substring(11);
this.fileReceiver.setOver(true);
this.chatContentList.add(word+"给你发送的文件传输完毕");
this.chatContentList.select(this.chatContentList.getItemCount()-1);
}
else{
//否则就将其打到交谈信息里,并让交谈信息可以自动滚动到最新位置
this.chatContentList.add(word);
this.chatContentList.select(this.chatContentList.getItemCount()-1);
}
}
} catch (IOException ex) {
System.out.println("客户端监听已关闭!");
}
}
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;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -