📄 clientsendfile.java
字号:
package chat;
import java.io.*;
import java.net.*;
import java.util.*;
import javax.swing.text.BadLocationException;
/**
*
* <p>Title:用户发送文件类 </p>
* <p>Description: 用户发送文件,分别为每个发送对象创建不同的用户线程</p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company: </p>
* @author not attributable
* @version 1.0
*/
public class ClientSendFile {
ServerSocket sendFileSocket=null;//发送文件的服务套接
Socket socket=null;
File toSendFile=null;
Hashtable saveThread=new Hashtable();
// static Hashtable saveServerSocket=new Hashtable();
String key=null;
Vector toPeoples;
FileCancelButton fileCancelButton;
/**
*
* @param file File 要发送的文件
* @param toPeoples Vector 要发送的对象
*/
public ClientSendFile(File file,Vector toPeoples){
toSendFile = file;
this.toPeoples = toPeoples;
Enumeration enum = this.toPeoples.elements();//取得发送对象的enumeration对象
while (enum.hasMoreElements()) {//循环创建用户线程
String toPeople=(String) enum.nextElement();
// System.out.println(enum.nextElement()+" "+toSendFile);
fileCancelButton=new FileCancelButton(toPeople,toSendFile);//创建取消发送按钮对象
try{
ChatArea.style.addStylesToDocument(ChatArea.fileInfoDoc,
fileCancelButton);
//ChatArea.privateDoc.insertString(ChatArea.privateDoc.getLength(), " "+"\n",
// ChatArea.privateDoc.getStyle("jpanel"));
ChatArea.fileInfoDoc.insertString(ChatArea.fileInfoDoc.getLength(), " "+"\n",
ChatArea.fileInfoDoc.getStyle("jpanel"));//通过样式显示提示信息在文件面板
ChatArea.tablePane.setSelectedIndex(2);
}catch(BadLocationException e){
}
boolean isExist=PeopleThread.saveServerSocket.containsKey(toPeople);//判断该发送对象是否已经存在于发送队列中
if(!isExist){//不存在
Thread peopleThread = new Thread(new PeopleThread(toSendFile,
toPeople));//直接创建用户线程
peopleThread.start();//启动线程
}else{//存在
int port=((Integer)PeopleThread.saveServerSocket.get(toPeople)).intValue();//取得已经打开的端口
if(ChatArea.getSocket()!=null){
try {
ChatArea.getOut().writeUTF("SEND_FILE:" + toSendFile + "#TOPEOPLE#" +
toPeople + "#PORT#" + port +
"#FILE_LENGTH#" + toSendFile.length());//发送通知信息给欲发送对象
}catch(IOException e){
}
}
}
try {
Thread.sleep(150);//延迟150毫秒再次进入下一个循环
}
catch (Exception e) {
}
}
}
public static void main(String[] args) {
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -