客户端发送:

import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.net.*;
import java.text.SimpleDateFormat;
import java.util.Date;

public class FTClient_Sender extends Thread {

 private Socket socket;
 public FTClient_Sender(String ip,int port)
 {
  try
  {
   socket = new Socket(ip,port);
  }
  catch(Exception e)
  {
   
  }
 }
 
 public void sendFile(String path)
 {
  try
  {
   File f = new File(path);
   
   SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
   String startTime = sdf.format(new Date());
   System.out.println("start transfer");
   FileInputStream fis = new FileInputStream(f);
   byte[] buffer  = new byte[1024];
   int cnt = 0;
   //OutputStream os = socket.getOutputStream();
         DataOutputStream ps = new DataOutputStream(socket.getOutputStream());
   while((cnt=fis.read(buffer))>=0) {
   ps.write(buffer,0,cnt);
   }
      ps.close();
      fis.close();
      String endTime = sdf.format(new Date());
      System.out.println("Complete");
  }
     catch(Exception e)
  {
   
  }
 }
}

服务器接收端:

import java.io.BufferedInputStream;
import java.io.DataInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.*;
public class FTServer_Receiver extends Thread {
 
 private ServerSocket server;
 private String savaPath;
 public void setSavePath(String savePath)
 {
  this.savaPath = savePath;
 }
 
 public FTServer_Receiver(int port)
 {
  try {
   server = new ServerSocket(port);
  } catch (IOException e) {
   e.printStackTrace();
  }
 }
 
 public void run()
 {
  while(true)
  {
     try {
   Socket s = server.accept();
   System.out.println("accept Socket");
   saveFile(s,savaPath);
     } catch (IOException e) {
   e.printStackTrace();
     }
   
    
  }
 }
 
 private void saveFile(Socket s,String savePath)
 {
  try
  {
     System.out.println("start transfer");
     OutputStream os = new FileOutputStream(savePath);
     DataInputStream dis = new DataInputStream(new BufferedInputStream(s.getInputStream()));
        dis.readByte();
     byte[] buffer  = new byte[1024];
     int cnt = 0;
     while((cnt=dis.read(buffer))>=0) {
      os.write(buffer,0,cnt);
     }
     os.close();
     dis.close();
     System.out.println("Complete");
  }
     catch(Exception e)
  {
   
  }
 }
}