⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 clientsendfile.java

📁 1. 消息即时通信 2. 消息发送实现一对一、一对多等多种发送模式 3. 发送的消息实现多彩文本编辑
💻 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 + -