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

📄 peoplethread.java~76~

📁 1. 消息即时通信 2. 消息发送实现一对一、一对多等多种发送模式 3. 发送的消息实现多彩文本编辑
💻 JAVA~76~
字号:

import java.net.*;
import java.io.*;
import java.util.*;
public class PeopleThread implements Runnable{
  ServerSocket sendFileSocket=null;
  Socket socket=null;
  DataInputStream dis;
  File toSendFile;
  Hashtable saveThread=new Hashtable();
  static Hashtable saveServerSocket=new Hashtable();
  String key=null;
  String toPeople=null;
  String _message=null;
  static int state=1;
  //int state2=1;
  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));
          if(ChatArea.getSocket()!=null){
            ChatArea.getOut().writeUTF("SEND_FILE:"+toSendFile+"#TOPEOPLE#"+toPeople+"#PORT#"+port+"#FILE_LENGTH#"+toSendFile.length());
           // System.out.println("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) {

          //System.out.println(socket.getPort()+"dui fang port");
          try {
            dis = new DataInputStream(socket.getInputStream());
            while (true) {
              _message = dis.readUTF();
              //System.out.println(_message);
              break;
            }
          }
          catch (Exception e) {

          }
         // System.out.println(_message);
          if (_message.startsWith("AGREE_ACCEPT:")) {
            String _toPeople = _message.substring(_message.indexOf(
                "AGREE_ACCEPT:") + 13, _message.indexOf("#TOSENDFILE#"));
            String _toSendFile = _message.substring(_message.indexOf(
                "#TOSENDFILE#") + 12);
            //System.out.println(_requestPeople + " " + _toSendFile);
            ClientSendFileThread clientSendFileThread=new ClientSendFileThread(new File(_toSendFile),_toPeople,socket);
            clientSendFileThread.start();

          }else if(_message.startsWith("DISAGREE_ACCEPT:")){
            String _toPeople=_message.substring(_message.indexOf("DISAGREE_ACCEPT:")+16,_message.indexOf("#TOSENDFILE#"));
            String _toSendFile=_message.substring(_message.indexOf("#TOSENDFILE#")+12);
            System.out.println(_message);
            try{
              this.dis.close();
              this.socket.close();
            }catch(Exception e){

            }


          }
        }
     // }


  }
  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 + -