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

📄 ftpserver.java

📁 一个小JAVA程序可以当做FTP服务器一个小JAVA程序可以当做FTP服务器
💻 JAVA
字号:

import java.io.*;
import java.net.*;
import java.util.concurrent.*;

public class FTPServer {
  private int port=8000;
  private ServerSocket serverSocket;
  private ExecutorService executorService;  //线程池
  private final int POOL_SIZE=4;  //单个CPU时线程池中工作线程的数目

  public FTPServer() throws IOException {
    serverSocket = new ServerSocket(port);
    //创建线程池
    //Runtime的availableProcessors()方法返回当前系统的CPU的数目
    //系统的CPU越多,线程池中工作线程的数目也越多 
    executorService= Executors.newFixedThreadPool( 
	    Runtime.getRuntime().availableProcessors() * POOL_SIZE);

    System.out.println("服务器启动");
  }

  public void service() {
    while (true) {
      Socket socket=null;
      try {
        socket = serverSocket.accept();
        executorService.execute(new Handler(socket));
      }catch (IOException e) {
         e.printStackTrace();
      }
    }
  }

  public static void main(String args[])throws IOException {
    new FTPServer().service();
  }
}

class Handler implements Runnable{
  private Socket socket;
  public Handler(Socket socket){
    this.socket=socket;
  }
  
  public void run(){
    try {
      System.out.println("New File Receive accepted " + socket.getInetAddress() + ":" +socket.getPort());
      OutputStream fileOut = new FileOutputStream("E:\\javaTech\\ch03\\data2.txt");
      InputStream socketIn = socket.getInputStream();
       byte[] buff = new byte[1024];
       
       int len=socketIn.read(buff); //从网络输入流中读len个字节到buff中.
       while (len!=-1) {
         fileOut.write(buff,0,len); //从buff中写入len个字节到文件.
         len=socketIn.read(buff);
      }
     fileOut.close();
     System.out.println("File receives over");
    }catch (IOException e) {
       e.printStackTrace();
    }finally {
       try{
         if(socket!=null)socket.close();
       }catch (IOException e) {e.printStackTrace();}
    }
  }
}

⌨️ 快捷键说明

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