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

📄 peoplethread.java~23~

📁 1. 消息即时通信 2. 消息发送实现一对一、一对多等多种发送模式 3. 发送的消息实现多彩文本编辑
💻 JAVA~23~
字号:
package chat;
import java.net.*;
import java.io.*;
import java.util.*;
/**
 *
 * <p>Title:发送对象线程类 </p>
 * <p>Description: 根据发送对象创建服务套接,等待对方连接</p>
 * <p>Copyright: Copyright (c) 2003</p>
 * <p>Company: </p>
 * @author not attributable
 * @version 1.0
 */
public class PeopleThread implements Runnable{
  ServerSocket sendFileSocket=null;//发送文件服务套接
  Socket socket=null;
  DataInputStream dis;
  File toSendFile;
  Hashtable saveThread=new Hashtable();//存储当前线程的hashtable
  static Hashtable saveServerSocket=new Hashtable();
  String key=null;
  String toPeople=null;
  String _message=null;
  static int state=1;
  //int state2=1;
  /**
   *
   * @param file File 要发送的文件对象
   * @param toPeople String 要发送的对象
   */
  public PeopleThread(File file,String toPeople){
    this.toSendFile=file;
    this.toPeople=toPeople;
    //System.out.println(toSendFile.length()+"k"+"  "+toPeople+"duixiang");
  }

  public void run(){//线程执行体
    boolean isExist=saveServerSocket.containsKey(toPeople);
    //if (!isExist) {
        int port = PeopleThread.selectPort();//取得空闲端口
        //System.out.println(port);
        try {
          sendFileSocket = new ServerSocket(port);//打开服务套接
          saveServerSocket.put(toPeople, new Integer(port));//把端口存入hashtable
          if(ChatArea.getSocket()!=null){
            ChatArea.getOut().writeUTF("SEND_FILE:"+toSendFile+"#TOPEOPLE#"+toPeople+"#PORT#"+port+"#FILE_LENGTH#"+toSendFile.length());
          }
          //socket = sendFileSocket.accept();
          //System.out.println("1");
        }
        catch (IOException e) {
          //e.printStackTrace();
          //System.out.println("snd");
        }
      //}
     /* else {
        System.out.println("else");
        //state2=0;
        int port=((Integer)saveServerSocket.get(toPeople)).intValue();
        try{

          if (ChatArea.getSocket() != null) {
            ChatArea.getOut().writeUTF("SEND_FILE:" + toSendFile + "#TOPEOPLE#" +
                                       toPeople + "#PORT#" + port);
            sendFileSocket = new ServerSocket(port);

          }
        }catch(Exception e){
          System.out.println("正在侦听2");
          /*try{
            socket = sendFileSocket.accept();
          }catch(Exception e1){
            System.out.println("catching");
            e1.printStackTrace();
          }*/

       // }
       /* try{
          sendFileSocket = new ServerSocket(port);
        }catch(IOException e){
          System.out.println("正在侦听...");
          System.out.println("2");
          //e.printStackTrace();
        }*/
        //发送通知
      //}
      //System.out.println(state);
      while(true){
      //  if (state == 1) {
          try {
            // System.out.println("before accept");
            //state = 0;

            socket = sendFileSocket.accept();
            //state = 1;
            //state2=1;

            //System.out.println("第二分文件");
          }
          catch (IOException e) {
            //System.out.println("accept");
            //e.printStackTrace();


          }
       // }

        if (socket != null) {
          ClientSendFileThread clientSendFileThread=new ClientSendFileThread(socket);
          clientSendFileThread.start();
        }
      }


  }
  public static int selectPort(){
    int port;
    for(int i=4000;i<4100;i++){
        try {
          ServerSocket serversocket = new ServerSocket(i);
          //port=i;
          serversocket.close();
          return i;
        }
        catch (IOException e) {
         //System.out.println("端口被占用");
        }
      }
    return 0;
  }












  public static void main(String[] args) {
  }

}












⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -