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

📄 filets.java

📁 有关JAVA的程序,研究P2P的chord协议,相信大家会喜欢的!
💻 JAVA
字号:
package javanet;
import java.io.*;
import java.net.*;
import javax.swing.JFrame;
import java.awt.FileDialog;
import javax.swing.JOptionPane;
public class fileTS extends JFrame implements Runnable{
  Socket socket;
  PrintWriter pw;
  DataInputStream dis;
  JOptionPane prompt;
  BufferedReader reader;
  DataOutputStream dos;
  BufferedReader br;
  String filename;
  String filepath;
  public void run()
  {
    try {
      sendFile(filename, filepath);
    }
    catch (NullPointerException ex) {
    }
    catch (IOException ex) {
    }
  }
  public fileTS(String ip,JOptionPane prompt,String filename,String filepath) throws UnknownHostException, IOException {
      socket = new Socket(ip, 8000);
      this.prompt=prompt;
      this.filename=filename;
      this.filepath=filepath;
  }
  public void sendFile(String filename,String filepath) throws IOException,NullPointerException
  {
      pw = new PrintWriter(socket.getOutputStream());
      reader=new BufferedReader(new InputStreamReader(socket.getInputStream()));
      pw.println(filename);
      pw.flush();
      reader.readLine();//the first message
      pw.print(0);
      pw.flush();
      int ans=reader.read();//the answer which tell client continue or not
      if(!(ans==48))
      {
        prompt.showMessageDialog(this,"对方拒绝了你的请求","提示",0);
        reader.close();
        pw.close();
        socket.close();
        throw new IOException();
      }
      File localfile=new File(filepath);
      long size=localfile.length();
      pw.write(size+"\n");
      pw.flush();
      reader.read(); ////////////
      //the codes below is to transfer file
      transfer(localfile);

  }
  public void transfer(File filer)
  {
    try
    {
      dis = new DataInputStream(new FileInputStream(filer));
      dos=new DataOutputStream(socket.getOutputStream());
      DataInputStream dios=new DataInputStream(socket.getInputStream());
      int bit;
      while((bit=dis.read())!=-1)
      {
        dos.write(bit);
        dos.flush();
        dios.read();
      }
      pw.print(true);
      pw.flush();
      boolean res=reader.ready();
      dis.close();
      dos.close();
      socket.close();
      prompt.showMessageDialog(this,"文件传送成功!","提示",2);
    }
    catch (IOException ex) {ex.printStackTrace();}
  }
}

⌨️ 快捷键说明

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